Ein gängiger Ansatz beim Testen von Algorithmen ist das Testen nach dem Zufallsprinzip: Generieren Sie eine signifikante Anzahl von Eingaben entsprechend einer (normalerweise einheitlichen) Verteilung, führen Sie den Algorithmus auf diesen aus und überprüfen Sie die Richtigkeit. Moderne Test-Frameworks können mit einigen Einschränkungen Eingaben anhand der Algorithmus-Signatur automatisch generieren.
Wenn es sich bei den Eingaben um Zahlen, Listen oder Zeichenfolgen handelt, werden solche Eingaben direkt generiert. Bäume sind schwieriger, aber dennoch einfach (mit stochastischen kontextfreien Grammatiken oder ähnlichen Ansätzen).
Wie können Sie Zufallsgraphen (effizient) erzeugen? In der Regel ist es nicht erwünscht, Diagramme gleichmäßig nach dem Zufallsprinzip auszuwählen: Sie sollten verbunden, planar oder zyklenfrei sein oder eine andere Eigenschaft erfüllen. Die Rückweisungsabtastung erscheint aufgrund der potenziell großen Anzahl unerwünschter Diagramme suboptimal.
Was sind nützliche Distributionen? Nützlich bedeutet hier, dass
- Die Grafiken werden den vorliegenden Algorithmus wahrscheinlich gut testen und
- Sie können effektiv und effizient erzeugt werden.
Ich weiß, dass es viele Modelle für Zufallsgraphen gibt, daher würde ich mich über einen Einblick in die Modelle freuen, die sich in dieser Hinsicht am besten für die Erstellung von Graphen eignen.
Wenn "ein Algorithmus" zu allgemein ist, verwenden Sie bitte Algorithmen für die Suche nach kürzesten Wegen als konkrete Klasse der zu testenden Algorithmen. Diagramme zum Testen sollten verbunden und ziemlich dicht sein (mit hoher Wahrscheinlichkeit oder zumindest in Erwartung). Für die Prüfung wäre die optimale Lösung sein Zufallsgraphen um einen kürzesten Weg zu schaffen , damit wir wissen , um das gewünschte Ergebnis (ohne einen anderen Algorithmus verwenden zu müssen).