2016-04-27 8 views
0

Hallo im woking auf Dijkstra-Algorithmus und der erste Hinweis in den Kommentaren ist, '' 'Für alle Knoten in der Grafik, Abstand gleich unendlich und vorher gleich null' '' Was meint er damit wie Sie setzen die Werte gleich unendlich? Auch in der Methode gibt es nicht enden so im rate nur um das Ende der benachbarten Knoten zu machen? Im sage das, weil es eine are_adjacent Methode ist Dies ist das kleine Ich habedijkstra's Algorithmus Wie setzt man Werte auf unendlich?

def are_adjacent(self, value1, value2): 
    return(self.find(value1).is_adjacent(self.find(value2))) 


def dijkstra(self, start): 
+0

mmm, schweben ('inf')? – Copperfield

+0

Wenn Sie die Anzahl der Scheitelpunkte und die maximale Länge einer Kante kennen, dann ist "unendlich = len (Scheitelpunkte) * max_length + 1" ein sicherer Wert. Es ist marginal schneller als 'float ('inf')'. – marcv81

Antwort

0

Sie können in Python wie folgt zu tun:

var = float('inf') 
var = float('-inf') # for minus oo 

Mit python >= 3.5 mit dem math Modul: (als @alpert und @YOU wies in den Kommentaren aus)

import math 
var = math.inf 
var = -math.inf 
0

Sie einen Wert als unendlich einstellen:

value = float('inf') 

oder in Python 3.5:

import math 
value = math.inf 
+0

Sind Sie sicher? 'math.inf' wirft einen Fehler in python3.4 –

+1

sein neues in Python 3.5 – YOU

+0

Sie haben Recht. Die Antwort wurde korrigiert. – alpert

0
  1. Sie es zu einigen großen Wert etwas wie 1e9 einstellen (NodeCount * MaximumEdgeWeight, gibt es keinen Weg, als dieser Wert mehr sein);
    1. Oder setze es auf den Wert "-1" und überprüfe es mit einem "if": if (d [v] == -1) {/ * Dann ist es unendlich */}.