 Welcome to this course on data structures and algorithms. We will continue our discussions on graphs. Today, we shall look at the basic operations that are required to be performed on graphs. Let us begin with the representation of graph in our programs. If a user wants to import the details of a graph, then the graph description needs to be captured in terms of getting information on the nodes of the graph and collecting information of the edges that exist in the graph. Further, if it is a directed graph, then we need to capture the direction if it is relevant. If it is an undirected graph, of course, the direction does not come. So, very simple, we need to capture the nodes and create nodes in our programs and we need to capture edges and represent them inside our program. Let us look at creation of graph nodes. We just want to collect information about how many nodes there are and how they are named. For example, here we show creation of nodes A, B, C, D, E as per our sample illustration that we saw last time. Next, we look at adding an edge. So, if an edge has to be added from A to B, it will internally represent this structure that there is an edge going from A to B. If there is an edge from A to C which will capture, it will represent this edge. Similarly, C to A, then it will mean a bidirectional edge between A and C. C to D, there is an edge here which we want to capture. C to B, D to B. Notice that all these edges are seen in a graph in a pictorial form by us, but internally inside the program, we will have to use appropriate data structures to store the information about these edges. There might be either a requirement of an algorithm to remove an edge or a node or we might have made a mistake in giving the input description of the graph in which case we might have to remove an edge or a node. So, there could be an operation required which will say remove the edge from A to B. So, when you remove the edge, this will be the representation of that graph. Similarly, removing an edge from C to D will remove this particular edge. Notice again that what we are showing here is a graphical representation of the graph, a pictorial representation of the graph, but what we have to actually do is to remove the internal representation of the corresponding edges. We also have a requirement that at the end of our operations, we might wish to display the nodes and edges of the graph in a printed format or a display format. Consider for example, that we have this graph now after editing or modifications or whatever. Therefore, we able to write a display portion of a program which would be able to display for example, vertices and all outgoing edges. So, if you look at this graph A to C, there is an outgoing edge. There is no outgoing edge from B. There is an outgoing edge from C to A and B. There is an outgoing edge from D to B and there is no outgoing edge from E. So, this will be a representation of the display of the vertices and outgoing edges. In exactly the similar manner, we may want to display vertices and incoming edges. To conclude, today we saw what are the basic operations that we need to perform on graph. These consist of collecting information about a graph in terms of the nodes that the graph has, for which we will have to create nodes internally. The edges that the graph has, for which we have to create a representation of each edge and finally, when we may need, we may have to remove either an edge or a node for which there should be appropriate operations defined. Of course, we must be able to display the finer contours of a graph and for that we will require display routines. Thank you.