Hallo,
ich scheitere nach wie vor an der Größe meines Lottoproblems.
Und im Endeffekt ist es einfach folgende Situation:
Man stelle sich folgendes Bild vor:
Links sind 13 Millionen Knotenpunkte, die nicht untereinander verbunden sind.
Rechts sind um die 18000 Knoten, auch nicht untereinander verbunden.
Zu Beginn des Ganzen ist jede Node auf der linken Seite mit genau 20 Nodes auf der rechten Seite verbunden.
Mit wie vielen Nodes auf der linken Seite eine Node auf der rechten Seite verbunden ist, ist hingegen unbekannt.
Nun wollen wir hingehen und der Reihe nach auf der rechten Seite Nodes (und damit die zugehörigen verbindungen) entfernen,
solange noch auch ohne die entfernte Node auf der linken Seite jede Node "erreichbar" ist.
Also jede Node auf der linken Seite muss immer mit irgendwas verbunden bleiben, egal wie.
Wenn wir auf der rechten Seite alle Nodes entfernt haben und nichts mehr entfernt werden kann
ohne die Bedingung zu verletzen,
dann sind wir fertig und die auf der rechten Seite noch vorhandenen Nodes sind das, was mich interessiert.
So die Lage.
Mit verschiedenen Klassen, Hashmaps und so liesse sich das normalerweise auch recht gut lösen.
Problem nur:
Wir haben rechts wie erwähnt 18000 Nodes, links um die 13 Millionen Nodes.
Da wird ein Überprüfen "Können wir rechts Node 16354 entfernen ohne eine Node links abzuschotten" echt schwer weil abertausende (bzw. millionen) Vergleiche nötig.
Und ich habe einfahc noch keine gute Idee gefunden wie man das Alles lösen könnte.
Mathematisch ginge sowas auch über eine Adjazenzmatrix die man womöglich invertieren müsste.
Aber die hätte dann 13 Millionen mal 18tausend Einträge!
Also ich habe echt keine Idee mehr, das Problem ist einfahc zu groß vom benötigten Speicher und Zeitbedarf her :-/
ich scheitere nach wie vor an der Größe meines Lottoproblems.
Und im Endeffekt ist es einfach folgende Situation:
Man stelle sich folgendes Bild vor:
Links sind 13 Millionen Knotenpunkte, die nicht untereinander verbunden sind.
Rechts sind um die 18000 Knoten, auch nicht untereinander verbunden.
Zu Beginn des Ganzen ist jede Node auf der linken Seite mit genau 20 Nodes auf der rechten Seite verbunden.
Mit wie vielen Nodes auf der linken Seite eine Node auf der rechten Seite verbunden ist, ist hingegen unbekannt.
Nun wollen wir hingehen und der Reihe nach auf der rechten Seite Nodes (und damit die zugehörigen verbindungen) entfernen,
solange noch auch ohne die entfernte Node auf der linken Seite jede Node "erreichbar" ist.
Also jede Node auf der linken Seite muss immer mit irgendwas verbunden bleiben, egal wie.
Wenn wir auf der rechten Seite alle Nodes entfernt haben und nichts mehr entfernt werden kann
ohne die Bedingung zu verletzen,
dann sind wir fertig und die auf der rechten Seite noch vorhandenen Nodes sind das, was mich interessiert.
So die Lage.
Mit verschiedenen Klassen, Hashmaps und so liesse sich das normalerweise auch recht gut lösen.
Problem nur:
Wir haben rechts wie erwähnt 18000 Nodes, links um die 13 Millionen Nodes.
Da wird ein Überprüfen "Können wir rechts Node 16354 entfernen ohne eine Node links abzuschotten" echt schwer weil abertausende (bzw. millionen) Vergleiche nötig.
Und ich habe einfahc noch keine gute Idee gefunden wie man das Alles lösen könnte.
Mathematisch ginge sowas auch über eine Adjazenzmatrix die man womöglich invertieren müsste.
Aber die hätte dann 13 Millionen mal 18tausend Einträge!
Also ich habe echt keine Idee mehr, das Problem ist einfahc zu groß vom benötigten Speicher und Zeitbedarf her :-/