import { JavaObject } from '../../java/lang/JavaObject'; import { Random } from '../../java/util/Random'; import { Class } from '../../java/lang/Class'; export declare class KursblockungMatrix extends JavaObject { /** * Ein {@link Random}-Objekt zur Steuerung des Zufalls über einen Anfangs-Seed. */ private readonly _random; /** * Die Werte der Matrix [Zeile][Spalte]. */ private readonly matrix; /** * Die Anzahl der Zeilen der Matrix. */ private readonly rows; /** * Die Anzahl der Spalten der Matrix. */ private readonly cols; /** * Die aktuelle Permutation der Zeilen für potentiellen Nichtdeterminismus. Interne Algorithmen iterieren so über * die Matrix-Zeilen in zufälliger Reihenfolge, damit aus mehreren optimalen Lösungen eine zufällige ausgewählt * wird. Die echten Zeilen der Matrix bleiben unverändert. */ private readonly permR; /** * Die aktuelle Permutation der Spalten für potentiellen Nichtdeterminismus. Interne Algorithmen iterieren so über * die Matrix-Spalten in zufälliger Reihenfolge, damit aus mehreren optimalen Lösungen eine zufällige ausgewählt * wird. Die echten Spalten der Matrix bleiben unverändert. */ private readonly permC; /** * Die Zuordnung einer Zeile zu einer Spalte (für das bipartite Matching). */ private readonly r2c; /** * Die Zuordnung einer Spalte zu einer Zeile (für das bipartite Matching). */ private readonly c2r; /** * Definiert, ob eine linker Zeilen-Knoten bereits besucht wurde (für das bipartite Matching). */ private readonly besuchtR; /** * Definiert, ob eine rechter Spalten-Knoten bereits besucht wurde (für das bipartite Matching). */ private readonly abgearbeitetC; /** * Definiert, den Zeilen-Vorgänger-Knoten eines rechten Spalten-Knotens (für das bipartite Matching). */ private readonly vorgaengerCzuR; /** * Definiert eine Warteschlange mit maximal rows Knoten (für das bipartite Matching). */ private readonly queueR; /** * Definiert ein linkes Knotengewicht (Potential) zur Umgewichtung der ausgehenden Kanten (für das bipartite * Matching). */ private readonly potentialR; /** * Definiert ein rechtes Knotengewicht (Potential) zur Umgewichtung der eingehenden Kanten (für das bipartite * Matching). */ private readonly potentialC; /** * Definiert die Entfernung vom aktuellen Zeilen-Knoten zu den jeweiligen Spalten-Knoten (für das bipartite * Matching). */ private readonly distanzC; /** *Erzeugt eine neue Matrix mit {@code rows} Zeilen und {@code cols} Spalten. * * @param pRandom Ein {@link Random}-Objekt zur Steuerung des Zufalls über einen Anfangs-Seed. * @param rows Die Anzahl der Zeilen der Matrix. * @param cols Die Anzahl der Spalten der Matrix. */ constructor(pRandom: Random, rows: number, cols: number); /** * Berechnet zur aktuellen Matrix ein maximales bipartites Matching. Die Methode geht davon aus, dass in der Matrix * ausschließlich die Werte 0 und 1 vorkommen. Werte ungleich 0 werden andernfalls als 1 (eine Kante im Graphen) * interpretiert. Nichtquadratische Matrizen sind erlaubt. Das Ergebnis der Methode ist eine größtmögliche Zeilen- * zu Spaltenzuordnung. Der Algorithmus hat eine Laufzeit von O(n³). * * @param nichtdeterministisch definiert, ob das Ergebnis zufällig sein soll, falls es mehrere optimale Lösungen * gibt. * @return die Zeilen- zu Spaltenzuordnung, negative Werte entsprechen einer Nichtzuordnung. */ gibMaximalesBipartitesMatching(nichtdeterministisch: boolean): Array; /** *Berechnet zur aktuellen Matrix ein minimales gewichtetes Matching. Die Methode geht davon aus, dass in der * Matrix ganzzahlige Werte vorkommen, d.h. es existiert eine Kante von jedem linken Knoten zu jedem rechten Knoten. * Negative Werte und nichtquadratische Matrizen sind erlaubt. Zur Berechnung eines maximalen Matching kann man * vorher alle Zellenwerte negieren. Das Ergebnis der Methode ist eine Zeilen- zu Spaltenzuordnung, deren Summe * minimal ist. Der Algorithmus verwendet mehrere Runden eines SSSP-Algorithmus (Dijkstra). Damit dies bei negativen * Werten funktioniert, werden die Kanten mit Hilfe von Knoten-Potentialen umgewichtet. Der Algorithmus hat eine * Laufzeit von O(n³). * * @see Wikipedia - * Shortest_path_problem * @see Wikipedia - Johnsons * Algorithm * @param nichtdeterministisch definiert, ob das Ergebnis zufällig sein soll, falls es mehrere optimale Lösungen * gibt. * @return die Zeilen- zu Spaltenzuordnung, negative Werte entsprechen einer Nichtzuordnung. */ gibMinimalesBipartitesMatchingGewichtet(nichtdeterministisch: boolean): Array; /** *Interne Methode zum Permutieren oder Initialisieren der Arrays {@link KursblockungMatrix#permR} und * {@link KursblockungMatrix#permC}. * * @param nichtdeterministisch falls {@code true} werden {@link KursblockungMatrix#permR} und * {@link KursblockungMatrix#permC} permutiert, sonst initialisiert. */ private initialisierPermRundPermC; /** *Interne Methode zum Initialisieren eines Arrays so, dass das Array mit den Zahlen {@code 0,1,2...} gefüllt wird. * * @param perm Das Array, welches mit den Zahlen {@code 0,1,2...} gefüllt wird. */ private static initialisiere; /** *Interne Methode zum zufälligen Permutieren eines Arrays. * * @param perm Das Array, dessen Inhalt zufällig permutiert wird. */ private permutiere; /** *Erlaubt Zugriff auf den Inhalt des Arrays. * * @return Die Array-Referenz. */ getMatrix(): Array>; /** *Erzeugt String-Ausgabe des Arrays sowie der Zeilen-zu-Spalten-Zuordnung {@link KursblockungMatrix#r2c}. Diese * Methode ist für Debug-Zwecke gedacht. * * @param kommentar Ein Kommentar der über der Matrix angezeigt wird. * @param zellenbreite Die Breite bei der Ausgabe der Zelle. * @param mitKnotenPotential Falls {@code true}, werden die Kantenwerte umgewichtet entsprechenden der * Knotenpotentiale, andernfalls bleiben die Kantenwerte unverändert. * @return Eine String-Representation der Matrix. */ convertToString(kommentar: string, zellenbreite: number, mitKnotenPotential: boolean): string; /** * Füllt die Matrix mit ganzzahligen zufälligen Zahlenwerten aus dem Intervall {@code [von;bis]}. * * @param von Der kleinstmögliche zufällige Wert (inklusive). * @param bis Der größtmögliche zufällige Wert (inklusive). */ fuelleMitZufallszahlenVonBis(von: number, bis: number): void; /** * Füllt die Matrix mit dem übergebenen Wert. * * @param wert Der Wert, der alle Zellen überschreibt. */ fuelleMitWert(wert: number): void; /** *Liefert die Anzahl an Zeilen der Matrix. * * @return die Anzahl an Zeilen der Matrix. */ gibZeilen(): number; /** *Liefert die Anzahl an Spalten der Matrix. * * @return die Anzahl an Spalten der Matrix. */ gibSpalten(): number; transpilerCanonicalName(): string; isTranspiledInstanceOf(name: string): boolean; static class: Class; } export declare function cast_de_svws_nrw_core_kursblockung_KursblockungMatrix(obj: unknown): KursblockungMatrix; //# sourceMappingURL=KursblockungMatrix.d.ts.map