Kreise verbinden



  • Jester schrieb:

    @berniebutt: siehste, wir sind noch mitten in schritt 1. 😉

    Stimmt Schritt 1: Problem erst einmal klar beschreiben und gewünschte Ziele verständlich benennen. 😉 Wer ist nun aber 'wir'? Ich kann hier nur rätseln. Und deswegen stellte weitere Fragen bevor ich antworten wollte. Schnelle Lösungen für ein nicht voll verstandenes Problem erscheinen mir unsinnig! 😮

    @Fragesteller: Du bist wieder dran! 🙄



  • berniebutt schrieb:

    A Circle schrieb:

    Ok, da habe ich mich villeicht etwas undeutlich ausgedrückt...
    Also ich habe Daten die in Beziehung stehen:

    class Data
    {
      /*Data*/
      Vector<Data*> RelatedData;
    };
    

    Sich klar ausdrücken, ist oft schon die halbe Lösung! :p Jetzt musst du nur noch erklären, was die 'Beziehung' der Daten untereinander sein soll! Mir fallen da nur Abstände und Winkel ein.

    SeppJ hat es richtig erkannt :

    SeppJ schrieb:

    Wenn ich das recht verstanden habe, ist die Beziehung "verbunden" und "unverbunden".

    Leider kann ich keine Informationen geben, die die Vielzahl an möglichen Strukturen dieses Netzwerkes einschränken würde.

    volkard schrieb:

    Was sagen die Kreise und Striche aus?

    Eher sowas http://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Lattice_of_the_divisibility_of_60.svg/313px-Lattice_of_the_divisibility_of_60.svg.png ? Also es liegt starke Bedeutung irgendwo und man kapiert sie besser, wenn das Bilchen hübsch ist?

    Ja

    volkard schrieb:

    http://www.google.de/search?um=1&hl=de&biw=896&bih=452&sa=3&q=midmap&btnG=Bilder+suchen&tbm=isch

    Die krasse Anzahl der verschiedenen Ansichten, was Übersichtlich ist, erschlägt mich.

    Leider tauchen in meinem Problem, Hierarchische Beziehungen zu selten auf, aber ab und an trifft man auch auf sowas. Für diese Struktur habe ich ein Lösungsansatz in meinem zweiten Post beschrieben und wird auch momentan als "Fallback"-Routine wenn die Daten ähnlichkeit(momentan werden nur die zurückgehenden und lateraren Verbindungen gezählt und durch die anzahl der "Hierarchischen Kanten" geteilt und mit einem Schwellenwert verglichen,
    naja wie auch immer "große"-ähnlichkeit ist selten und viele alternative Topologien habe ich nicht implementiert(mir fehlen Ideen) deswegen ist der Schwellenwert noch relativ groß) Hierarchische Struktur besitzt.

    Gruss A Circle

    ps:

    Ich finde es interessant das solche Probleme ein Mensch theoretisch lösen könnte, aber für einen Computer ein unzugängliches Problem darstellt. Gibt es Erkenntnisse in diesem bereich, mit versuchen einem Neuronalen Netz das schöne anordnen von Graphen beizubringen? - Hat jemand die mittel das zu testen?



  • Kannst du denn wenigstens einen Hinweis geben, was diese "verbunden/nicht verbunden" Beziehung eigentlich darstellen soll? Eventuell hilft das Verständnis der dahinterliegenden Struktur bei der Auswahl eines geeigneten Verfahrens.



  • CStoll schrieb:

    Kannst du denn wenigstens einen Hinweis geben, was diese "verbunden/nicht verbunden" Beziehung eigentlich darstellen soll? Eventuell hilft das Verständnis der dahinterliegenden Struktur bei der Auswahl eines geeigneten Verfahrens.

    Leider nicht, die "verbunden/nicht verbunden" Beziehung wird vom User bestimmt und das Programm wird mit Daten gefüttert und ich darf die Daten Visualisieren.
    Je nach Problemstellung kann das Programm für Mindmaps, UML-Diagramme, Künstliche Neuronale Netze oder einfach abstrakte Graphen zur Auswertung verwendet werden.

    Die Lösung für Mindmaps und künstliche Neuronale Netzte sind die einfachsten da die anzahl der klassifizierbaren Strukturen überschaubar ist.
    Wobei es bei Neuronalen Netzwerken auch mal paar schwierige "ausreiser" vorkommen...
    UML-Diagramme sind auch noch machbar, wenn man die unterschiedlichen Verbindungen(Assoziationen[lateral], Vererbung[hierarchisch]) getrennt analysiert und anschliesend die ergebnisse zusammenträgt(und den einen oder anderen Kompromiss eingeht(wegen den []-annahmen).

    Aber bei den allgemeinen Graphen oder anderen, nicht von mir genannten Netzwerken, versagt mein Programm zu wenige Netzwerke klassifiziert und schön-zeichnen-Prozeduren kennt.



  • A Circle schrieb:

    Ich finde es interessant das solche Probleme ein Mensch theoretisch lösen könnte, aber für einen Computer ein unzugängliches Problem darstellt.

    Ein Mensch kann leider auch nicht das hübschere Graphenbildchen des K4 zwischen http://mathestuff.de/files/k4kl.png und http://upload.wikimedia.org/wikipedia/commons/thumb/5/59/Complete_graph_K4.svg/210px-Complete_graph_K4.svg.png herausfinden, wenn er nichts über die dargestellten Daten erfahren darf!
    Das eine ist kreuzngsfrei. Das andere betont, daß keine der vier Ecken eine besondere Lage hat. Jede dieser Eigenschaften kann je nach Anwendung wichtiger sein.

    Was ich mit der mathematischen Forschung meinte, war: Könnte der Computer es schaffen, beliebige Graphenbildchen zu zurechtzurücken, daß sie hübsch sind, dann könnte er automatisiert mathematische Forschung betreiben. Und das ist möglicherweise prinzipiell nicht möglich.

    Wenn Dein Programm den Zweck hat, den Menschen beim Überlegen zu unterstützen, mußt Du wohl dem Benutzer viele Knöpfe anbieten. Zum Beispiel beim neuronalen Netz Eingangs- und Ausgangsknoten definieren zu können (könnte mir voestellen, daß der Rechner versuchen soll, die an entgegengesetze Ränder zu legen), bei anderen Graphen definieren zu können, daß die Beziehung transitiv ist, auch wenn das nicht dargestellt wird (woraufhin der Rechner vielleicht versucht, durchgehende Richtungen länger beizubehalten), oder bestimmte Kreise als unwichtig zu kennzeichnen (zum Beispiel, damit der Rechner erkennt, daß das (bis auf den einen störenden Knoten) ein Baum ist).



  • Aha Neuronale Netze - immerhin eine neue Erkenntnis zur Fragestellung! Sind dafür 250 Punkte nicht viel zu wenig? 😕
    Für ein zu schreibendes Programm kommt man um klare Festlegungen und Rechenvorschriften nicht herum. Was nicht vorgedacht ist, kann das Programm nicht leisten.

    1. Punkt = neuronaler Knoten --> Welche Eigenschaften besitzt ein Punkt (x,y,...)?
    2. Benutzer legt Beziehungen fest, aus denen sich Strukturen ergeben --> welche Eingaben sind möglich?
    3. Für welche Punkte gelten diese Beziehungen?
    4. Sind die Strukturen auf die Punkte oder auf die Beziehungen bezogen?

    Jester hat recht: Schritt 1 = Beschreibung des Problems.
    Ich fürchte, dass dies nicht gelingt und es somit keine programmierbare Lösung gibt!



  • Neuronale Netze sind wahrscheinlich oft azyklisch, dann kann man prima topologisch sortieren und die Knoten auf Layer zuweisen. Jedes Layer wird dann auf eine horizontale Gerade gezeichnet. Der große Freiheitsgrad ist dann noch das Routen der Kanten und die Ordnung der Knoten in den Layern. Beliebt ist: Dummy-Knoten einfügen, sodass jede Kante nur noch benachbarte Layer verbindet, dann Barycenter-Methode zum Kreuzungen minimieren. Das Framework zu diesen Layer-Mathoden hört auf den Namen Sugiyama-style graph drawing, http://en.wikipedia.org/wiki/Layered_graph_drawing

    Trifft das ungefähr was Du willst? Wenn nicht, nochmal die Aufforderung: versuch zu sagen was genau Du suchst.



  • Jester schrieb:

    Trifft das ungefähr was Du willst? Wenn nicht, nochmal die Aufforderung: versuch zu sagen was genau Du suchst.

    Er sucht offenbar ein Modell für komplexe neuronale Netze. Für den Anfang mit überschaubaren 250 Knoten. Ein rechenbarer Algorithmus für ein menschliches Gehirn mit sehr viel mehr Knoten und Verknüpfungen oder Layern könnte einen Nobelpreis wert sein? 😕 Das wäre Forschung - viel Glück! 🙂



  • Jester schrieb:

    Trifft das ungefähr was Du willst? Wenn nicht, nochmal die Aufforderung: versuch zu sagen was genau Du suchst.

    Eigentlich schon, nur beschränkt sich mein Programm nicht nur auf neuronale Netze, ich suche ganz allgemein Routinen für meinen Graphenzeichner. Dank deines Links habe ich auch einen http://rise4fun.com/Agl, nun wäre ich Interessant welche Routinen dahinter stecken(und wo seine grenzen sind)



  • A Circle schrieb:

    Dank deines Links habe ich auch einen http://rise4fun.com/Agl, nun wäre ich Interessant welche Routinen dahinter stecken(und wo seine grenzen sind)

    Probier doch mal den K4. Macht er die viereckige Version mit vier gleichberechtigten Knoten und einer Kreuzung oder macht der die dreieckige Version mit einem Knoten in der Mitte?

    digraph G 
    {
      A -> B
      A -> C
      A -> D
      B -> A
      B -> C
      B -> D
      C -> A
      C -> B
      C -> D
      D -> A
      D -> B
      D -> C
    }
    


  • A Circle schrieb:

    Jester schrieb:

    Trifft das ungefähr was Du willst? Wenn nicht, nochmal die Aufforderung: versuch zu sagen was genau Du suchst.

    Eigentlich schon, nur beschränkt sich mein Programm nicht nur auf neuronale Netze, ich suche ganz allgemein Routinen für meinen Graphenzeichner. Dank deines Links habe ich auch einen http://rise4fun.com/Agl, nun wäre ich Interessant welche Routinen dahinter stecken(und wo seine grenzen sind)

    das sieht ein bißchen aus wie das dot-format von graphviz. Ansonsten klink ich mich dann hier langsam mal aus, solange du der meinung bist dass "ich will schöne bildchen für beliebige graphen malen" eine ausreichende problembeschreibung ist, werden wir hier nicht weit kommen. Du kannst dich ja melden, falls der Leidensdruck größer wird und Du daraufhin doch noch Lust bekommst über Deine Problemstellung nachzudenken.



  • Jester schrieb:

    ... Leidensdruck größer wird ...

    Bisher war das nicht sein, sondern unser Leidensdruck! 😃


Anmelden zum Antworten