Heim Java javaLernprogramm Darstellung gewichteter Diagramme

Darstellung gewichteter Diagramme

Sep 06, 2024 am 06:07 AM

Gewichtete Kanten können in Adjazenzlisten gespeichert werden.

Es gibt zwei Arten gewichteter Diagramme: scheitelpunktgewichtete und kantengewichtete Diagramme. In einem scheitelpunktgewichteten Diagramm wird jedem Scheitelpunkt eine Gewichtung zugewiesen. In einem kantengewichteten Diagramm wird jeder Kante ein Gewicht zugewiesen. Von den beiden Typen haben kantengewichtete Diagramme mehr Anwendungsmöglichkeiten. In diesem Kapitel werden kantengewichtete Diagramme betrachtet.

Gewichtete Diagramme können auf die gleiche Weise wie ungewichtete Diagramme dargestellt werden, mit der Ausnahme, dass Sie die Gewichte an den Kanten darstellen müssen. Wie bei ungewichteten Diagrammen können die Scheitelpunkte in gewichteten Diagrammen in einem Array gespeichert werden. In diesem Abschnitt werden drei Darstellungen für die Kanten in gewichteten Diagrammen vorgestellt.

Darstellung gewichteter Kanten: Kantenarray

Gewichtete Kanten können mithilfe eines zweidimensionalen Arrays dargestellt werden. Sie können beispielsweise alle Kanten im Diagramm in Abbildung unten (a) mithilfe des Arrays in Abbildung unten (b) speichern.

Representing Weighted Graphs

Gewichte können jeden Typ haben: Integer, Double, BigDecimal und so weiter. Sie können ein zweidimensionales Array vom Typ Object verwenden, um gewichtete Kanten wie folgt darzustellen:

Objekt[][] Kanten = {
{new Integer(0), new Integer(1), new SomeTypeForWeight(2)},
{new Integer(0), new Integer(3), new SomeTypeForWeight(8)},
...
};

Gewichtete Adjazenzmatrizen

Angenommen, der Graph hat n Eckpunkte. Sie können eine zweidimensionale n * n-Matrix, beispielsweise Gewichte, verwenden, um die Gewichte an Kanten darzustellen. weights[i][j] stellt das Gewicht auf der Kante dar (i, j). Wenn die Eckpunkte i und j nicht verbunden sind, ist weights[i][j] null. Beispielsweise können die Gewichte im Diagramm in Abbildung oben (a) mithilfe einer Adjazenzmatrix wie folgt dargestellt werden:

Representing Weighted Graphs

Adjazenzlisten

Eine andere Möglichkeit, die Kanten darzustellen, besteht darin, Kanten als Objekte zu definieren. Die Klasse AbstractGraph.Edge wurde so definiert, dass sie eine ungewichtete Kante in AbstractGraph.java darstellt. Für gewichtete Kanten definieren wir die Klasse WeightedEdge wie im Code unten gezeigt.

Representing Weighted Graphs

AbstractGraph.Edge ist eine innere Klasse, die in der Klasse AbstractGraph definiert ist. Es stellt eine Kante vom Scheitelpunkt u bis v dar. WeightedEdge erweitert AbstractGraph.Edge um eine neue Eigenschaft weight.

Um ein WeightedEdge-Objekt zu erstellen, verwenden Sie new WeightedEdge(i, j, w), wobei w das Gewicht auf der Kante ist (i , j). Oftmals muss man die Gewichte der Kanten vergleichen. Aus diesem Grund implementiert die Klasse WeightedEdge die Schnittstelle Comparable.

Für ungewichtete Diagramme verwenden wir Adjazenzlisten zur Darstellung von Kanten. Für gewichtete Diagramme verwenden wir immer noch Adjazenzlisten. Die Adjazenzlisten für die Eckpunkte im Diagramm in Abbildung unten a können wie folgt dargestellt werden:

java.util.List[] list = new java.util.List[5];

Representing Weighted Graphs

Representing Weighted Graphs

list[i] speichert alle Kanten neben dem Scheitelpunkt i.

Aus Gründen der Flexibilität verwenden wir eine Array-Liste anstelle eines Arrays fester Größe, um die Liste wie folgt darzustellen:

Liste> list = new java.util.ArrayList<>();

Das obige ist der detaillierte Inhalt vonDarstellung gewichteter Diagramme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT

Stock Market GPT

KI-gestützte Anlageforschung für intelligentere Entscheidungen

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie füge ich dem Klassenpfad eine JAR -Datei in Java hinzu? Wie füge ich dem Klassenpfad eine JAR -Datei in Java hinzu? Sep 21, 2025 am 05:09 AM

Verwenden Sie den Parameter -cp, um das JAR zum Klassenpfad hinzuzufügen, damit das JVM seine internen Klassen und Ressourcen laden kann, wie z.

So erstellen Sie eine Datei in Java So erstellen Sie eine Datei in Java Sep 21, 2025 am 03:54 AM

Usefile

Wie implementiere ich eine Schnittstelle in Java? Wie implementiere ich eine Schnittstelle in Java? Sep 18, 2025 am 05:31 AM

Verwenden Sie das Keyword implementiert die Benutzeroberfläche. Die Klasse muss spezifische Implementierungen aller Methoden in der Schnittstelle bereitstellen. Es unterstützt mehrere Schnittstellen und wird von Commas getrennt, um sicherzustellen, dass die Methoden öffentlich sind. Die Standard- und statischen Methoden nach Java 8 müssen nicht umschreiben.

Erstellen erweiterbarer Anwendungen mit der Java Service Provider Interface (SPI) Erstellen erweiterbarer Anwendungen mit der Java Service Provider Interface (SPI) Sep 21, 2025 am 03:50 AM

Javaspi ist ein integrierter Service-Erkennungsmechanismus in JDK und implementiert die dynamische Ausdehnung der interface-orientierten Dynamik durch Serviceloader. 1. Definieren Sie die Serviceschnittstelle und erstellen Sie eine Datei mit dem vollständigen Namen der Schnittstelle unter meta-inf/diensten/und schreiben Sie den vollständig qualifizierten Namen der Implementierungsklasse. 2. Verwenden Sie Serviceloader.load (), um die Implementierungsklasse zu laden, und das JVM wird die Konfiguration automatisch lesen und sie instanziieren. 3. Der Schnittstellenvertrag sollte während des Entwurfs, der Unterstützung von Priorität und bedingten Belastung geklärt und die Standardimplementierung bereitstellen. 4. Die Anwendungsszenarien umfassen Mehrzahler-Kanalzugriff und Plug-in-Überprüfung. 5. Achten Sie auf Leistung, Klassenpfad, Ausnahme -Isolation, Thread -Sicherheit und Versionskompatibilität; 6. In Java9 kann die Bereitstellung in Kombination mit Modulsystemen verwendet werden.

Ein tiefes Verständnis von HTTP -anhaltenden Verbindungen: Richtlinien und Praktiken zum Senden mehrerer Anfragen auf demselben Sockel Ein tiefes Verständnis von HTTP -anhaltenden Verbindungen: Richtlinien und Praktiken zum Senden mehrerer Anfragen auf demselben Sockel Sep 21, 2025 pm 01:51 PM

In diesem Artikel wird der Mechanismus des Sendens mehrerer HTTP-Anfragen auf demselben TCP-Socket, nämlich die persistierende HTTP-Verbindung (Keep-Alive), eingehend untersucht. Der Artikel verdeutlicht den Unterschied zwischen HTTP/1.x- und HTTP/2-Protokollen, unterstreicht die Bedeutung der serverseitigen Unterstützung für anhaltende Verbindungen und wie die Verbindung korrekt behandelt wird: die Header der Antwort schließen. Durch die Analyse gemeinsamer Fehler und Bereitstellung von Best Practices möchten wir Entwicklern helfen, effiziente und robuste HTTP -Kunden aufzubauen.

Java Generics und Wildcards verstehen Java Generics und Wildcards verstehen Sep 20, 2025 am 01:58 AM

Javagenericsprovidecompile-timetypesafetyandeliminatecastingbyallowingtypeparametersonclasses,interfaces,andmethods;wildcards(?,?extendsType,?superType)handleunknowntypeswithflexibility.1.UseunboundedwildcardwhentypeisirrelevantandonlyreadingasObject

Java -Tutorial: Wie man eine verschachtelte Arraylist überflätt und ihre Elemente in ein Array füllt Java -Tutorial: Wie man eine verschachtelte Arraylist überflätt und ihre Elemente in ein Array füllt Sep 18, 2025 am 07:24 AM

In diesem Tutorial wird beschrieben, wie verschachtelte Arraylisten effizient verarbeitet werden können, die andere Arraylisten in Java enthalten und alle seine internen Elemente in ein einzelnes Array verschmelzen. Der Artikel bietet zwei Kernlösungen durch den Flatmap -Betrieb der Java 8 -Stream -API: Zuerst in eine Liste und dann das Ausfüllen des Arrays und das direkte Erstellen eines neuen Arrays, um die Anforderungen verschiedener Szenarien zu erfüllen.

Wie lese ich eine Eigenschaftendatei in Java? Wie lese ich eine Eigenschaftendatei in Java? Sep 16, 2025 am 05:01 AM

Verwenden Sie die Eigenschaftenklasse, um Java -Konfigurationsdateien einfach zu lesen. 1. Konfiguration. Properties in das Ressourcenverzeichnis, laden Sie es über getClassLoader (). GetResourceAsStream () und rufen Sie die Methode load () auf, um die Datenbankkonfiguration zu lesen. 2. Wenn sich die Datei in einem externen Pfad befindet, verwenden Sie sie mit FileInputStream, um sie zu laden. 3. Verwenden Sie GetProperty (Schlüssel, StandardValue), um fehlende Tasten zu verarbeiten und Standardwerte bereitzustellen, um die Ausnahmeregelung und Eingabeüberprüfung sicherzustellen.

See all articles