AuD
Lecture 'Algorithmen und Datenstrukturen' (code examples)
IterativeDFS1.java
Go to the documentation of this file.
1package aud.example.graph;
2
3import aud.Stack;
4
17public class IterativeDFS1 extends Traversal {
18
20 super(g);
21 }
22
23 @Override public String name() { return "iterative DFS (close to DFS)"; };
24
25 @Override public void start(MyNode s0) {
26 initialize(); // reset all node attributes
27
28 int count=0;
30 Stack<MyNode> parent=new Stack<MyNode>();
31
32 s0.d=0.0;
33 open.push(s0);
34 parent.push(null);
35
36 while (!open.is_empty()) {
37 if (verbose>0)
38 System.out.println("open="+open.toString());
39
40 MyNode s=open.pop();
41 MyNode p=parent.pop();
42
43 if (s.ord<0) {
44 s.ord=count++; // marked
45 s.p=p;
46
47 if (p!=null) {
48 MyEdge e=g_.getEdge(p,s);
49 s.d=p.d+(e.hasWeight() ? e.getWeight() : 1.0);
50 }
51
52 showMark(s);
53 showVisit(s);
54 }
55
56 for (MyEdge e : g_.getOutEdges(s)) {
57
58 if (verbose>1)
59 System.err.println(e);
60
61 MyNode t=(MyNode) e.destination();
62 if (t==s)
63 t=(MyNode) e.source(); // undirected graph
64
65 if (t.ord<0) { // not marked
66 open.push(t);
67 parent.push(s);
68 }
69 }
70 }
71 }
72
73}
Implementation of a stack based on aud.Vector.
Definition: Stack.java:8
void push(T x)
Push x onto stack.
Definition: Stack.java:31
boolean is_empty()
Is stack empty?
Definition: Stack.java:14
T pop()
Pop element from stack.
Definition: Stack.java:23
String toString()
Get string representation "|a|b|c".
Iterative implementation of DFS.
void start(MyNode s0)
start traversal at node s0
String name()
get traversal name
edge with all possible attributes that we require ;-)
Definition: MyEdge.java:6
graph based on aud.graph.GraphAM
Definition: MyGraph.java:11
node with all possible attributes that we require ;-)
Definition: MyNode.java:6
MyNode p
node from which node was reached (defines spanning tree)
Definition: MyNode.java:16
double d
distance to start node (sum of weighs or edge count if no weights defined)
Definition: MyNode.java:21
int ord
time when node is (first marked/put into front)
Definition: MyNode.java:13
interface for traversals of MyGraph
Definition: Traversal.java:6
int verbose
set verbosity (extra output if >0)
Definition: Traversal.java:15
void initialize()
initialize graph for traversal (reset all attributes), provided for convenience to be called by start
Definition: Traversal.java:34
void showMark(MyNode node)
callback to give visual feedback on marking a node
Definition: Traversal.java:44
boolean hasWeight()
determine if edge weight is defined
Vector< Edge > getOutEdges(Node node)
Definition: GraphAM.java:98
Edge getEdge(Node source, Node destination)
Definition: GraphAM.java:80
double getWeight()
set edge weight
Definition: SimpleEdge.java:19
AuD lecture: Data structures, algorithms, examples.
Definition: A234Tree.java:1