# HG changeset patch
# User Robert L. Miller <rlm@rlmiller.org>
# Date 1276804458 25200
# Node ID ba1343258af21bc22fb2a9abb1e0cc5e0537beff
# Parent a5153e8afdaa001eb3e2d48ff8c762abd3c44fa8
#9073 - fix planarity w.r.t. multiple edges
diff -r a5153e8afdaa -r ba1343258af2 sage/graphs/generic_graph.py
|
a
|
b
|
|
| 2229 | 2229 | (False, Graph on 6 vertices) |
| 2230 | 2230 | sage: result[1].is_isomorphic(graphs.CompleteBipartiteGraph(3,3)) |
| 2231 | 2231 | True |
| 2232 | | """ |
| | 2232 | |
| | 2233 | Multi-edged and looped graphs are partially supported:: |
| | 2234 | |
| | 2235 | sage: G = Graph({0:[1,1]}, multiedges=True) |
| | 2236 | sage: G.is_planar() |
| | 2237 | True |
| | 2238 | sage: G.is_planar(on_embedding={}) |
| | 2239 | Traceback (most recent call last): |
| | 2240 | ... |
| | 2241 | NotImplementedError: Cannot compute with embeddings of multiple-edged or looped graphs. |
| | 2242 | sage: G.is_planar(set_pos=True) |
| | 2243 | Traceback (most recent call last): |
| | 2244 | ... |
| | 2245 | NotImplementedError: Cannot compute with embeddings of multiple-edged or looped graphs. |
| | 2246 | sage: G.is_planar(set_embedding=True) |
| | 2247 | Traceback (most recent call last): |
| | 2248 | ... |
| | 2249 | NotImplementedError: Cannot compute with embeddings of multiple-edged or looped graphs. |
| | 2250 | sage: G.is_planar(kuratowski=True) |
| | 2251 | (True, None) |
| | 2252 | |
| | 2253 | :: |
| | 2254 | |
| | 2255 | sage: G = graphs.CompleteGraph(5) |
| | 2256 | sage: G = Graph(G, multiedges=True) |
| | 2257 | sage: G.add_edge(0,1) |
| | 2258 | sage: G.is_planar() |
| | 2259 | False |
| | 2260 | sage: b,k = G.is_planar(kuratowski=True) |
| | 2261 | sage: b |
| | 2262 | False |
| | 2263 | sage: k.vertices() |
| | 2264 | [0, 1, 2, 3, 4] |
| | 2265 | |
| | 2266 | """ |
| | 2267 | if self.has_multiple_edges() or self.has_loops(): |
| | 2268 | if set_embedding or (on_embedding is not None) or set_pos: |
| | 2269 | raise NotImplementedError("Cannot compute with embeddings of multiple-edged or looped graphs.") |
| | 2270 | else: |
| | 2271 | return self.to_simple().is_planar(kuratowski=kuratowski) |
| 2233 | 2272 | if on_embedding: |
| 2234 | 2273 | if self.check_embedding_validity(on_embedding): |
| 2235 | 2274 | return (0 == self.genus(minimal=False,set_embedding=False,on_embedding=on_embedding)) |
diff -r a5153e8afdaa -r ba1343258af2 sage/graphs/planarity.pyx
|
a
|
b
|
|
| 107 | 107 | g.relabel(to) |
| 108 | 108 | |
| 109 | 109 | if status == NOTOK: |
| 110 | | raise RuntimeError("not ok.") |
| | 110 | raise RuntimeError("Status is not ok.") |
| 111 | 111 | elif status == NONEMBEDDABLE: |
| 112 | 112 | # Kuratowski subgraph isolator |
| 113 | 113 | g_dict = {} |