Autor Beitrag
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 16.11.08 17:12 
Hi!

In der SB ist es schon angeklungen, ich brauche mal wieder einen Ansatz von euch. Bzw. ich hab sogar schon einen, aber bevor ich da weiter mache möchte ich erstmal wissen was das eigentlich ist ;)

Aaaalso.
Es gibt eine Menge Punkte. Jeder dieser Punkte ist durch X,Y und eine 'Farbe' definiert.
Ich möchte jetzt eine Art 'Umrisse' finden, so dass folgendes passiert:
  1. Jeder Umriss enthält möglichst viele Knoten gleicher Farbe und
  2. keinen Knoten einer anderen Farbe
  3. Kein Knoten ist weiter als $limit vom nächsten im zugehörigen Umriss entfernt
  4. ist eins davon nicht möglich, muss ein neuer Umriss begonnen werden
  5. Umrisse können daher auch aus 1..2 Elementen bestehen, obwohl beides eigentlich keine Flächen beschreibt.


Im Anhang findet man einige Beispiele.
Rot und grün sind wegen 3. gespalten. Im Grunde auch wegen 2.
Gelb ist nichtkonvex, da blau eine direkte Verbindung verhindert. Durch 3. und 5. steht unten ein einzelner gelber Punkt.
Grün demonstriert Regel 1, also dass der größte Umkreis gesucht ist, in dem andere Punkte gleicher Farbe liegen.

user profile iconGausi in der SB hat folgendes geschrieben:
Meinst du die konvexe Hülle einer Punktmenge?

Fällt mir grade auf... eigentlich nicht, siehe Gelb.


Klingt eigentlich nach einer Paranuss... hoffentlich hab ich hier nicht grade durch Zufall eine erwischt ;)

cu
Martok
Einloggen, um Attachments anzusehen!
_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 16.11.08 17:22 
Da hast du in der SB aber nach dem falschen Gebiet gefragt. Mit Graphalgorithmen kommt man hier nicht weit, das ist ein gemetrisches Problem. Einen Ansatz habe ich auf Anhieb nicht, und auch keinen Namen für das Problem, der einem dabei weiterhelfen könnte. :nixweiss:

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Klingt eigentlich nach einer Paranuss... hoffentlich hab ich hier nicht grade durch Zufall eine erwischt ;)
Ne, sowas einfaches machen wir da nicht. :twisted:

_________________
We are, we were and will not be.
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: So 16.11.08 17:25 
Du weißt nicht, wie es heißt, aber es ist dir zu einfach?!?

_________________
1405006117752879898543142606244511569936384000000000.
Martok Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 16.11.08 18:25 
ausblenden Delphi-Quelltext
1:
Wolle92.IronieDetektor.CheckFuntionality;					


Mein Ansaz wäre irgendwie so:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
AlleKnoten:= array of Punkt(x,y,Farbe)
solange AlleKnoten nicht leer:
  Neuer Graph
  Nimm Knoten aus alleKnoten;
  graph.farbe := dieserKnoten.Farbe
  solange AlleKnoten nicht leer:
    nimm knoten aus alleKnoten where farbe = graph.farbe; //hups, zu viel SQL gemacht...
    wäre graph immer noch gültig?
      ja:
        knoten einfügen
        knoten aus alleKnoten entfernen
      sonst:
        schleife verlassen
  wiederhole
wiederhole

Oder irgendwie so.

Okay, ist tatsächlich geometrisch.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
miniC#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75

Wiin XP Home
C# VS Express 2008
BeitragVerfasst: So 16.11.08 20:16 
brauchen die farben für eine einfache lösung nicht eine zeichenfolge, bzw prioritäten ?

diese punktmenge:

user defined image

hat zwo lösungen :

user defined image
user defined image

ohne prioritäten müssest du bei jedem schritt den ganzen baum erstellen und ihn mit dem alternativbaum in der anzahl der verbleibenden punkte vergleichen.

also entweder prios oder lookahead, oder verstehe ich da was falsch ?

edit : wo ich es grade poste , sehe ich , dass lösung 2 nicht ganz korrekt verbunden ist :)

_________________
Zitat MDSN : " ... C# (gesprochen: "si scharp") " :D
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: So 16.11.08 21:23 
ne, lösung 2 ist schon ok so...

es können auch Umrisse mit einem Knoten existieren, aber Lösung 1 hat den Fehler, das im Rot-Umriss nen blauer Punkt steckt...

_________________
1405006117752879898543142606244511569936384000000000.
miniC#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75

Wiin XP Home
C# VS Express 2008
BeitragVerfasst: So 16.11.08 21:35 
user profile iconWolle92 hat folgendes geschrieben Zum zitierten Posting springen:
ne, lösung 2 ist schon ok so...


naja der dritte rote punkt ist verbindbar (angenommen erliegt innerhalb der maximalreichweite) und es sollen immer alle möglichen verbindungen gefunden werden.


user profile iconWolle92 hat folgendes geschrieben Zum zitierten Posting springen:
aber Lösung 1 hat den Fehler, das im Rot-Umriss nen blauer Punkt steckt...


das war doch meine frage/hinweis. ich seh nämlich keine regel, die die verkettungspriorität der farben bestimmt. das beispiel ist etwas
unglücklich gewählt von mir. verschiebe den in beispiel 2 von mir nicht verbundenden roten punkt 1 cm hoch in das blaue rechteck, dann
hast du es deutlicher :

l1 = {rot1,rot2,rot3} & {blau1,blau2} & blau3
l2 = {b1,b2,b3} & {r1,r2} & r3

edit : ah , ok jetzt verstehe ich , es soll keine verkettung gleichfargbiger punkte sein , sondern inselchen :)

_________________
Zitat MDSN : " ... C# (gesprochen: "si scharp") " :D
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: So 16.11.08 21:48 
genau, und in den inseln sollen sich dann, wenn möglich, möglichst viele gleichfarbige punkte befinden...

_________________
1405006117752879898543142606244511569936384000000000.
Martok Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 17.11.08 01:13 
Genau... möglichst wenige möglichst große Inselchen ;)

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Di 18.11.08 10:48 
Hi,

gibt es inzwischen eigentlich ein bisschen Code. Würde mich sehr interessieren, wie und ob ihr das Problem gelöst habt.

Grüße,
Martok Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mi 19.11.08 00:45 
Naja, Pseudocode gibts ja oben... zum implementieren fehlt mir im Moment die Zeit... unter anderem, weil in dem Browsergame für das das eigentlich ist uns grad der Krieg erklärt wurde xD

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."