nitlanguage
/
nit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge: lib/config: fix doc
[nit.git]
/
lib
/
graphs
/
digraph.nit
diff --git
a/lib/graphs/digraph.nit
b/lib/graphs/digraph.nit
index
8f45495
..
65e0162
100644
(file)
--- a/
lib/graphs/digraph.nit
+++ b/
lib/graphs/digraph.nit
@@
-117,7
+117,7
@@
# g.add_arcs([[1,2],[2,1],[2,3],[3,4],[4,5],[5,3]])
# for component in g.strongly_connected_components.to_partitions
# do
# g.add_arcs([[1,2],[2,1],[2,3],[3,4],[4,5],[5,3]])
# for component in g.strongly_connected_components.to_partitions
# do
-# print component
+# print component
# end
# # Prints [1,2] and [3,4,5]
# ~~~
# end
# # Prints [1,2] and [3,4,5]
# ~~~
@@
-291,7
+291,7
@@
interface Digraph[V: Object]
# g.add_arc(0, 2)
# g.add_arc(1, 2)
# for arc in g.arcs_iterator do
# g.add_arc(0, 2)
# g.add_arc(1, 2)
# for arc in g.arcs_iterator do
- # assert g.has_arc(arc[0], arc[1])
+ # assert g.has_arc(arc[0], arc[1])
# end
# ~~~
fun arcs_iterator: Iterator[Array[V]] do return new ArcsIterator[V](self)
# end
# ~~~
fun arcs_iterator: Iterator[Array[V]] do return new ArcsIterator[V](self)
@@
-317,7
+317,7
@@
interface Digraph[V: Object]
# g.add_arc(1, 3)
# g.add_arc(2, 3)
# for arc in g.incoming_arcs(3) do
# g.add_arc(1, 3)
# g.add_arc(2, 3)
# for arc in g.incoming_arcs(3) do
- # assert g.is_predecessor(arc[0], arc[1])
+ # assert g.is_predecessor(arc[0], arc[1])
# end
# ~~~
fun incoming_arcs(u: V): Collection[Array[V]]
# end
# ~~~
fun incoming_arcs(u: V): Collection[Array[V]]
@@
-340,7
+340,7
@@
interface Digraph[V: Object]
# g.add_arc(2, 3)
# g.add_arc(1, 2)
# for arc in g.outgoing_arcs(1) do
# g.add_arc(2, 3)
# g.add_arc(1, 2)
# for arc in g.outgoing_arcs(1) do
- # assert g.is_successor(arc[1], arc[0])
+ # assert g.is_successor(arc[1], arc[0])
# end
# ~~~
fun outgoing_arcs(u: V): Collection[Array[V]]
# end
# ~~~
fun outgoing_arcs(u: V): Collection[Array[V]]
@@
-369,20
+369,31
@@
interface Digraph[V: Object]
fun to_dot: String
do
var s = "digraph \{\n"
fun to_dot: String
do
var s = "digraph \{\n"
+ var id_set = new HashMap[V, Int]
# Writing the vertices
# Writing the vertices
- for u in vertices_iterator do
- s += " \"{u.to_s.escape_to_dot}\" "
+ for u in vertices_iterator, i in [0 .. vertices.length[ do
+ id_set[u] = i
+ s += " \"{i}\" "
s += "[label=\"{u.to_s.escape_to_dot}\"];\n"
end
# Writing the arcs
for arc in arcs do
s += "[label=\"{u.to_s.escape_to_dot}\"];\n"
end
# Writing the arcs
for arc in arcs do
- s += " {arc[0].to_s.escape_to_dot} "
- s += "-> {arc[1].to_s.escape_to_dot};"
+ s += " {id_set[arc[0]]} "
+ s += "-> {id_set[arc[1]]};"
end
s += "\}"
return s
end
end
s += "\}"
return s
end
+ # Open Graphviz with `self.to_dot`.
+ #
+ # Mainly used for debugging.
+ fun show_dot do
+ var f = new ProcessWriter("dot", "-Txlib")
+ f.write to_dot
+ f.close
+ end
+
## ------------ ##
## Neighborhood ##
## ------------ ##
## ------------ ##
## Neighborhood ##
## ------------ ##