Unformatted text preview:

Some Graph Algorithms1. Topological sortInformal algorithmImplementing topological sortUsing buckets2. ConnectivityTransitive closureWarshall’s algorithmWarshall’s algorithm: Implementation3. All-pairs shortest pathState graphs4. AutomataOperation of an automatonExample automatonSlide 155. Nondeterministic automata6. String searchingThe EndSome Graph Algorithms1. Topological sort•Suppose a project involves doing a number of tasks, but some of the tasks cannot be done until others are done•Your job is to find a legal order in which to do the tasks•For example, assume:–A must be done before D–B must be done before C, D, or E–D must be done before H–E must be done before D or F–F must be done before C–H must be done before G or I–I must be done before F•This is a partial orderingof the tasks•Some possible total orderings:–A B E D H I F C G–B A E D H G I F C–A B E D H I G F CAB CD E FGH IInformal algorithm•Extracting a total ordering from a partial ordering is called a topological sort•Here’s the basic idea:–Repeatedly,•Choose a node all of whose“predecessors” have alreadybeen chosen•Example:–Only A or B can be chosen. Choose A.–Only B can be chosen. Choose B.–Only E can be chosen. Choose E.–Continue in this manner until all nodes have been chosen.•If all your remaining nodes have predecessors, then there is a cycle in the data, and no solution is possibleAB CD E FGH ICGA BFEDHIImplementing topological sort•The graph structure can be implemented in any convenient way•We need to keep track of the number of in-edges at each node•Whenever we choose a node, we need to decrement the number of in-edges at each of its successorsAB CD E FGH I0 02121113B2 \\ 0\ 1•Since we always want a node with the fewest (zero) in-edges, a priority queue seems like a good idea•To remove an element from a priority queue and reheap it takes O(log n) time•There is a better wayUsing buckets•We can start with an array of linked lists; array[n] points to the linked list of nodes with n in-edges•At each step,–Remove a node N from array[0]–For each node M that N points to,•Get the in-degree d of node M•Remove node M from bucket array[d]•Add node M to bucket array[d-1]–Quit when bucket array[0] is empty•As always, it doesn’t make sense to use a high efficiency (but more complex) algorithm if the problem size is small2. Connectivity•Suppose you want to find out quickly (O(1) time) whether it is possible to get from one node to another in a directed graph•You can use an adjacency matrix to represent the graph•A connectivity table tells us whether it is possible to get from one node to another by following one or more edgesABGEFDCABCDEFGA B C D E F GABCDEFGA B C D E F GTransitive closure•Reachability is transitive: If you can get from A to E, and you can get from E to G, then you can get from A to G•Warshall’s algorithm is a systematic method of finding the transitive closure of a graphABCDEFGA B C D E F GABCDEFGA B C D E F GnewWarshall’s algorithm•Transitivity: If you can get from A to B, and you can get from B to C, then you can get from A to C•Warshall’s observation: If you can get from A to B using only nodes with indices less than B, and you can get from B to C, then you can get from A to C using only nodes with indices less than B+1•Warshall’s observation makes it possible to avoid most of the searching that would otherwise be requiredWarshall’s algorithm: Implementation for (i = 1; i <= N; i++) { for (j = 1; j <= N; j++) { if (a[j][i]) { for (k = 1; k <= N; k++) { if (a[i][k]) a[j][k] = true; } } }}•It’s easy to see that the running time of this algorithm* is O(N3)*Algorithm adapted from Algorithms in C by Robert Sedgewick3. All-pairs shortest path•Closely related to Warshall’s algorithm is Floyd’s algorithm•Idea: If you can get from A to B at cost c1, and you can get from B to C with cost c2, then you can get from A to C with cost c1+c2•Of course, as the algorithm proceeds, if you find a lower cost you use that instead•The running time of this algorithm is also O(N3)State graphs•The next couple of algorithms are for state graphs, in which each node represents a state of the computation, and the edges between nodes represent state transitions•Example: Thread states in Javareadywaitingrunning deadstart•The edges should be labelled with the causes of the state transitions, but in this example they are too verbose4. Automata•Automata are a formalization of the notion of state graphs•Each automaton has a start state, one or more final states, and transitions between statesThe start state A final state A state transitionaOperation of an automaton•An automation represents a “program” to accept or reject a sequence of inputs•It operates as follows:–Start with the “current state” set to the start state and a “read head” at the beginning of the input string; –While there are still characters in the string: •Read the next character and advance the read head; •From the current state, follow the arc that is labeled with the character just read; the state that the arc points to becomes the next current state; –When all characters have been read, accept the string if the current state is a final state, otherwise reject the string.Example automaton•Example input string: 1 0 0 1 1 1 0 0•Sample trace: q0 1 q1 0 q3 0 q1 1 q0 1 q1 1 q0 0 q2 0 q0 Since q0 is a final state, the string is acceptedq0q1q2q311110000Example automaton•A “hard-wired” automaton is easy to implement in a programming language•state := q0;loop case state of q0 : read char; if eof then accept string; if char = 0 then state := q2; if char = 1 then state := q1; q1 : read char; if eof then reject string; if char = 0 then state := q3; if char = 1 then state := q0; q2 : read char; if eof then reject string; if char = 0 then state := q0; if char = 1 then state := q3; q3 : read char; if eof then reject string; if char = 0 then state := q1; if char = 1 then state := q2; end case;end loop; q0q1q2q311110000• A non-hard-wired automaton can be implemented as a directed graph5. Nondeterministic automata•A nondeterministic automaton is one in which there may be more than one out-edge with the same label•A nondeterministic automaton accepts a sequence of inputs if there is any way to use that string to


View Full Document

Penn CIS 121 - Some Graph Algorithms

Download Some Graph Algorithms
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Some Graph Algorithms and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Some Graph Algorithms 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?