Collections Tupel suchen

  • Themenstarter Themenstarter horstiii1
  • Beginndatum Beginndatum
H

horstiii1

Gast
UV1.png

könnt ihr mir helfen? Gesucht sind alle (c1,c2) aus cs ( ( und ) 2Tupel ), wobei b(c1)!=b(c2), a(b(c1))!=a(b(c2)), x(d(c1))==x(d(c2)), z(b(c2))<5000 UND |y(a(b(c1)))-y(a(b(c2)))|<5000.
 
Zu schnell auf " erstellen" geklickt....
ist das in Java möglich,
sind die Assoziationen richtig,
wie heißt ein Algorithmus,
und wie aussehen der?
 
sind die Assoziationen richtig,
Das solltest du selbst wissen, niemand wird nur aufgrund des Diagramms sagen können, ob es irgendwas unbekanntes korrekt darstellt. Falsch ist aber die Doppelung von Assoziation und Attribut.


wie heißt ein Algorithmus,
und wie aussehen der?
Dafür müsste man erstmal wissen, was du überhaupt genau meinst, sowohl Diagramm als auch Text sind dazu eher kontraproduktiv...

Ansonsten: „Suche“.

Im Zweifelsfall alle Tupel bilden und die nicht passenden aussortieren.
 
x von dem d aus dem d von c1. Stichwort Prädikate 🙄
Etwas technischer c1.d.x oder gar c1->d->x.

Im Zweifelsfall alle Tupel bilden und die nicht passenden aussortieren
Problem! Es gibts 100.000 Cs, also 10 Milliarden Berechnungen wenn man es über allCs macht.... Von Bs gibt es nur 10.000 und As 5.000.

Ist es am Besten über allBs zu laufen?

Und noch was.... Ist zwischen C und D die Beschriftung 1..* -> 1 richtig?

Danke für eure Hilfe, dann muss ich meine Birne nicht anstrengen 😳
 
x von dem d aus dem d von c1. Stichwort Prädikate 🙄
Etwas technischer c1.d.x oder gar c1->d->x.
Dann schreib es auch technisch, mit x(d) wird so ziemlich jeder eine Funktion verbinden...

Problem! Es gibts 100.000 Cs, also 10 Milliarden Berechnungen wenn man es über allCs macht.... Von Bs gibt es nur 10.000 und As 5.000.

Ist es am Besten über allBs zu laufen?
Keine Ahnung. Wie gesagt: "Dafür müsste man erstmal wissen, was du überhaupt genau meinst, sowohl Diagramm als auch Text sind dazu eher kontraproduktiv..."

Und noch was.... Ist zwischen C und D die Beschriftung 1..* -> 1 richtig?
Wie gesagt: "Das solltest du selbst wissen, niemand wird nur aufgrund des Diagramms sagen können, ob es irgendwas unbekanntes korrekt darstellt."

Oder falls du eine Antwort möchtest: ich finde, das sollte <>-3--2-> sein (oder was für eine Antwort erwartest du?)
 
Gesucht sind alle (c1,c2) aus cs ( ( und ) 2Tupel ), wobei b(c1)!=b(c2), a(b(c1))!=a(b(c2)), x(d(c1))==x(d(c2)), z(b(c2))<5000 UND |y(a(b(c1)))-y(a(b(c2)))|<5000.

c1.b!=c2.b UND
c1.b.a!=c2.b.a UND
c1.d.x==c2.d.x UND
c2.b.z<5000 UND
|c1.b.a.y-c2.b.a.y|<5000

Das ist mir zu abstrakt. Soweit ich das bis jetzt überblicken kann, würde das am ehesten eine Bibliothek modellieren:

Eine Bibliothek (Main) enthält eine Reihe(as) von Räumen(A). A enthält y als Raumnummer
Die Räume enthalten eine Anzahl(bs) von Regalen (B). B enthält z als Regalnummer.
In den Regalen stehen eine Anzahl (cs) Bücher (C).
Zu dem Buch gehört eine Auswahlkarte(D) , die eine Zahl x enthält, in diesem Fall die Anzahl der Ausleihen.

B enthält eine Variable a, die auf ein Objekt A zeigt.
C enthält eine Variable b, die auf ein Objekt B zeigt.
C enthält eine Variable d, die auf ein Objekt D zeigt.

Hier wird c doch gar nicht definiert.
 
@AndiE
Eine Bibliothek? 😱
Es geht eigentlich um Planeten und Sterne....
Die letzte ( und zweitletzte ) Bedingung kann sogar entfallen , verringern das Ergebnis aber ungemein so dass es zu keinem Memory Overflow kommt....

Mir fallen 3 Lösungswege ein, bei denen es bei zwei aber sehr langsam sein wird....
Toll wäre sofort ein 'adaptiver' Algorithmus so dass ee auch für 3..bis..n Tupel mit paarweise gleichen Bedingungen gilt....
 
Ich suche ein Anzahl von Büchern die in verschiedenen Räumen in verschiedenen Regalen liegen ( Bedingung 1 und 2 auf mein Modell übertragen), für die die Anzahl der Ausleihen gleich ist (Bedingung 3). Ich finde das irgendwie komisch, weil ich üblicherweise bei mehreren Bedingungen davon ausgehe, dass sie die Suche immer mehr verfeinern. Wenn ich ein Buch von Raum 1 in Regal A betrachte, dann erfüllen alle Bücher in den Regalen B-Z der Räume 2-100, die ersten beiden Bedingungen. Sind nun nur 100 Bücher im Regal, dann suche ich für Bedingung 3 alle 260000 Bücher durch.

Es wäre da echt hilfreich zu wissen, was genau mit dem Modell gemeint ist.
 
Mmmh, also ihr möchtet ein Modell gefüllt mit sinnvollen Daten haben? Eeeh, also sinnvolle Daten für das Modell?
Das wären ca. 100 mb. 🙁

@AndiE : Das Klassend. wird so in KEINEM Bibliotheksbuch stehen , hier ist der Gehirngrips gefragt.... (falls Du das meintest damit)
<hr></hr>
Ich suche ein Anzahl von Büchern die in verschiedenen Räumen in verschiedenen Regalen liegen ( Bedingung 1 und 2
verbindung zwischen 2 Büchern , der Rest ist richtig

für die die Anzahl der Ausleihen gleich ist (Bedingung 3)
die ein gemeinsames Merkmal haben....

üblicherweise bei mehreren Bedingungen davon ausgehe, dass sie die Suche immer mehr verfeinern
greencheckmark , aber mindestens die Ergebnismenge wird kleiner....

Wenn ich ein Buch von Raum 1 in Regal A betrachte, dann erfüllen alle Bücher in den Regalen B-Z der Räume 2-100, die ersten beiden Bedingungen
stell Dir vor , z(b(c2))<5000 UND |y(a(b(c1)))-y(a(b(c2)))|<5000 wäre die max Entfernung in cm die ein Buch oder Regal zum nächsten "Metapunkt" entfernt liegt UND die Entfernung in cm in der zwei Regale oder Räume maximal auseinanderentfernt liegen dürfen....
<hr></hr>
Sind nun nur 100 Bücher im Regal, dann suche ich für Bedingung 3 alle 260000 Bücher durch.
hier sind meiner Meinung noch nicht alle Unklarheiten beseitigt.... 🙂
 
Durch die Kompositionassoziationen (mit den Anzahlangaben) ist das Modell doch noch nicht zu weit von der Wirklichkeit abstrahiert - und dadurch ist alles erklärt.
Außerdem habe ich Member s hinzugefügt, so dass eine Implementierung direkt möglich ist.
Statt Array s sind auch HashMap s erlaubt, wenn dadurch der Algorithmus schneller wäre.

Also wenn willst kannst loslegen.

UV1.png
 
Durch die Kompositionassoziationen (mit den Anzahlangaben) ist das Modell doch noch nicht zu weit von der Wirklichkeit abstrahiert - und dadurch ist alles erklärt.
Du hast offensichtlich absolut nicht verstanden, wozu ein Modell dient...

Außerdem habe ich Member s hinzugefügt, so dass eine Implementierung direkt möglich ist.
Formal falsch. Entweder ist's ein Attribut, oder eine Assoziation. Die Pfeile zwischen A, B und C sind btw alle falsch, dort hast du keine gerichtete Beziehung.
 
Gesucht sind alle (c1,c2) aus cs ( ( und ) 2Tupel ), wobei b(c1)!=b(c2), a(b(c1))!=a(b(c2)), x(d(c1))==x(d(c2)), z(b(c2))<5000 UND |y(a(b(c1)))-y(a(b(c2)))|<5000.

Soweit ich das sehe, lässt sich jedem c eindeutig ein x-, y- und z-Wert zuordnen. Sieht man also mal von der Forderung nach unterschiedlichen Referenzen ab, erhält man für c1=(x1,y1,z1) und c2=(x2,y2,z2) doch z1 != z2, y1 != y2, x1 == x2, z2 < 5000 und Math.abs(y1 - y2) < 5000.

Man könnte die Cs z. B. nach x und y aufsteigend sortieren, dann einen Sweep durchführen:
1. s := erstes Element der aufsteigend sortierten Cs
2. c := das nächste Elemente der aufsteigend sortierten Cs
3. Falls c.x != s[0].x: s := empty
4. Falls c.z >= 5000: hinzufügen(s, c), weiter mit 2
5. bearbeite(s, c), weiter mit 2

hinzufügen(s, c):
1. füge c an s an
2. so lange Math.abs(s[0].z - c.z) >= 5000, entferne s[0] aus s

bearbeite(s, c2):
1. für jedes c1 aus s:
1.1. falls c1.z != c2.z && c1.y != c2.y && ... : gib (c1, c2) aus
2. hinzufügen(s, c2)
 
Die Pfeile zwischen A, B und C sind btw alle falsch, dort hast du keine gerichtete Beziehung.
Es gibt keine ungerichteten im KD....
Dass ich die Rückwärtsassoziationen weggelassen haben sollte es dir etwas einfacher machen zu lesen.

@mihe7 dankesehr 😀
doch z1 != z2, y1 != y2, x1 == x2,[....]
Genau so ist es.
As und Bs müssen unterschiedlich sein....
(Jedes A hat aber eigene Bs , wiederholen sich nicht)
Wenn a(b1)!=a(b2) dann b1!=b2.

Dem Sweep muss ich erstmal verstehen....
 

Zurück
Oben