Vertex-Färbung von python - Chromatische Zahl X(G)
Ich versuche zu schreiben, einen kleinen code in python Farbe Diagramm-Eckpunkte und zählen die Anzahl der Farben verwendet, so dass keine zwei miteinander verbundenen Scheitelpunkte haben die gleiche Farbe.
das ist mein code und ich weiß nicht, was ist daran falsch, jede Hilfe w?
es ist keine Hausaufgabe!
import networkx as nx
import matplotlib.pyplot as plt
G=nx.Graph()
colors = ['Red', 'Blue', 'Green', 'Yellow', 'Black','Pink','Orange','White','Gray','Purpul','Brown','Navy']
G.nodes = [1,2,3,4,5]
G.edges= [{1,5},{1,3},{1,2},{1,4},{4,5}]
colors_of_nodes={}
def coloring(node, color):
for neighbor in G.edges:
color_of_neighbor = colors_of_nodes(neighbor)
if color_of_neighbor == color:
return False
return True
def get_color_for_node(node):
for color in colors:
if coloring(node, color):
return color
def main():
for node in G.nodes:
colors_of_nodes[node] = get_color_for_node(node)
print colors_of_nodes
main()
- wo finde ich den vollständigen Quellcode für dieses Beispiel ist es offen? vielen Dank im Voraus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mehrere Fragen sind in diesem code:
Purpul
->Purple
colors_of_nodes
ist ein Wörterbuch, so ist es nicht aufrufbar als eine Funktion. socolors_of_nodes(neighbor)
fehl. Sie können index-Wörterbuch auf zwei Artencolors_of_nodes[node]
odercolors_of_nodes.get(node, default_value_if_node_is_not_a_key)
. Sie wollen, um die zweite.G.neighbors(node)
. Zusätzlich, eine Kante ist eineset
die nicht hashable somit nicht ein Wörterbuch Schlüssel.G.add_nodes_from([1,2,3,4,5])
,G.add_edges_from([(1,2),(1,3),(1,4),(1,5),(4,5)])
,G.nodes()
Unten ist Ihre bearbeiteten code in ein funktionierendes format.
Autor = 'brent'
Beachten Sie, dass dies ist ein greedy-Verfahren zum färben eines Graphen und erhalten Sie nicht unbedingt eine optimale Färbung des Graphen.
pip install -r requirements.txt
. Wenn Sie sind neu in python (oder ehrlich gesagt, auch nicht neu bei python, anaconda ist ein guter Ort, um zu starten. Kontinuum.io/downloads . Die networkx-link ist in der post. Nicht sicher, was Sie sonst noch brauchen,python your_file_name.py
Sollten Sie post den Fehler, dass Sie bekommen, was Sie erwarten und was tatsächlich geschieht.
Minimal dieses:
Erhöhen wird eine
TypeError: 'dict' object is not callable
Fehler.