LabVIEWForum.de
Türme von Hanoi rekursiv programmieren? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Türme von Hanoi rekursiv programmieren? (/Thread-Tuerme-von-Hanoi-rekursiv-programmieren)

Seiten: 1 2 3


Türme von Hanoi rekursiv programmieren? - Crizzel - 04.11.2010 12:46

Hallo LVF!

Ich hoffe, ich bin hier in der Kategorie mit meinem Problem auch richtig.

Wir haben vor kurzem ein Projekt bekommen, mit LV die Türme von Hanoi rekursiv zu programmieren und das Ganze dann an unseren DENSO Industrieroboter zur "Ausführung" zu geben.
Wir trennen jetzt mal die zwei Probleme und betrachten nur das erste, die rekursive Programmierung des Algorithmus von den Türmen von Hanoi.

Und genau da setzt unser Problem an. Da niemand Ahnung von der Programmierung von Algorithmen in LV hat, sitzen wir ziemlich doof da. Das Internet gibt wenig her und sätmliche LV-Bücher helfen mir auch nicht weiter.

Hat jemand einen Vorschlag bzw. ein paar hilfreiche Tipps, wie ich soetwas lösen könnte?
Ich verstehe ja noch nicht einmal den Algorithmus des Problems... Türme von Hanoi

Es wäre toll, wenn sich hier jemand meiner annehmen könnte und mir helfen würde!

Vielen Dank & viele Grüße,
Christoph


Türme von Hanoi rekursiv programmieren? - snuz - 04.11.2010 16:52

Hallo Crizzel,

ich finde die Aufgabe äußerst interessant. Ich weiß nicht wie Du dir die Umsetzung gedacht hast, aber ich habe erstmal drei Arrays genommen. Die Arrays haben einen Index von 4, also fünf "Scheiben". Das erste Array fülle ich mit 1 bis 5, somit steht 1 für die kleinste Scheibe und 5 für die größte, die anderen beiden jeweils mit 0. In einer Schleife suche ich das zweite Array nach "Platz" durch (0 bedeutet Platz), also der zweite Turm. Dann schreibe ich die 1 auf das zweite Array um, danach sucht LabView wieder nach Platz da Turm 1 und Turm 2 jetzt belegt sind schaut er nach Turm 3. Dann wieder nach einer Möglichkeit...
weiter bin ich noch nicht, aber möglich ist es.
Wieviel Scheiben sollen denn genutzt werden?

Gruß snuz


Türme von Hanoi rekursiv programmieren? - GerdW - 04.11.2010 17:18

Hallo Christoph,

ein bisschen Googlen schadet nicht... Ist ja schließlich eine Aufgabe, die schon Generationen vor dir bearbeitet habenSmile


Türme von Hanoi rekursiv programmieren? - jg - 04.11.2010 21:34

Für echt rekursive Programmierung in LabVIEW müsstest du updaten auflv09updaten:
http://zone.ni.com/devzone/cda/tut/p/id/10214

Gruß, Jens


Türme von Hanoi rekursiv programmieren? - rbliomera - 04.11.2010 23:05

Edit: Deleted. /EOM


Türme von Hanoi rekursiv programmieren? - GerdW - 05.11.2010 08:59

Hallo Crizzel,

Zitat:Ich verstehe ja noch nicht einmal den Algorithmus des Problems...
Dann spiel den Algorithmus doch einfach mal mit ein paar Münzen nach! Ist sehr hilfreich, sich das zu visualisierenSmile


Türme von Hanoi rekursiv programmieren? - Lucki - 05.11.2010 10:28

Interessantes Problem. Das Programm (Link von GerdW) auf LV umzustricken dürfte kein Problem sein. Schwieriger wird es sein, den Turmumbau während es läuft schön zu visualisieren. Hat da jemand eine Idee wie man das machen könnte?


Türme von Hanoi rekursiv programmieren? - GerdW - 05.11.2010 10:38

Hallo Lucki,

Zitat:Hat da jemand eine Idee wie man das machen könnte?
- PictureIndicator, "Scheiben" selbst malen&animieren
- mehrere ColorBoxes vorhalten und diese auf dem FP verschieben


Türme von Hanoi rekursiv programmieren? - Crizzel - 05.11.2010 11:03

Hallo Forum

wow, das ging ja wirklich schnell mit den ersten patenten Antworten. Freut mich!

Vorab: Ich habe bisher nur 1 Projekt in LV gemacht - und das war ziemlich "einfach"...(Spannungs-, Strom- und Leistungsmessung an PV-Modulen mit Ausgabe in LV). Daher sind meine Kenntnisse in LV ziemlich bescheiden.

Selbstverständlich habe ich seit zwei Wochen Algorithmen gelesen und damit herumgespielt. Das Problem ist ja schon uralt und die Thematik eigentlich ausführlich behandelt. Dennoch fehlt bei mir noch das entscheidende Fünkchen, damit mir der Algorithmus klar wird.

Wir haben letztes Jahr in LV das Spiel sequenziell für den Roboter programmiert - aber das ist natürlich keine Kunst. Das ist ja nur eine Abfolge verschiedener Punkte, die der Roboter abfahren soll und dabei werden noch ein paar I/Os benutzt.

Anforderungen:
Nun ist die Aufgabe aber, das Szenario rekursiv zu programmieren mit Anzahl n Scheiben (variabel vom Benutzer über die Oberfläche wählbar - wir dachten an n=3..6).
Des Weiteren soll der Ablauf auf der Oberfläche (nennen wir sie mal Frontend) verfolgbar sein - es genügt ein numerischer Zähler (eigentlich keine Grafik - aber das wäre die irrsinnige Krönung des Ganzen).
Es soll noch ein Zähler drauf, wie viel Schritte er noch machen muss und schon gemacht hat.

----------------
Ich habe gestern durch Zufall im amerikanischen Forum von NI die Lösung für das Problem gefunden - jedoch nur für das Teilproblem (und das wird mir im Zweifel schon mal meinen Allerwertesten retten).
Die VI berechnet die Schritte rekursiv (siehe Anhänge) und gibt die Schrittfolge als Text aus.

Textausgabe umbauen in Ausgabe von Zahlen ist ja kein Problem. Das Ergebnis muss ich dann in ein Array schreiben lassen, aus dem mein Roboter auslesen kann, wann er was machen soll.

Und jetzt kommen die komplizierten Parts:

- Übergabe der Werte an den Roboter (kein Problem, hoffe ich) mit automatischer Berechnung der Höhe der Scheiben anhand von einem noch zu erstellenden Array in dem steht, zu welcher Zeit auf welcher Stange wie viele Scheiben liegen.

- Darstellung des Ablaufes als Zähler/Grafik in LV

- Verständnis für den Algorithmus (*lach* - ich hab die VI aber verstehe trotzdem noch nicht, wie am Ende die richtige Schrittfolge rauskommt)


Ich weiss, solche Aufgaben sind hier mit Sicherheit keine "Highlights"...dennoch würde ich mich sehr freuen, wenn ich nicht allzu sehr belächelt werde ;-)))

Vielen Dank & Grüße aus Albstadt,
Christoph


Türme von Hanoi rekursiv programmieren? - SeBa - 05.11.2010 13:20

' schrieb:Darstellung des Ablaufes als Zähler/Grafik in LV

Hab mal bei diesem Aspekt angefangen, da der Algorithmus an sich ja schon existiert. Den Text zu zerpflücken und in Anweisungen zu zerlegen ... hatte ich keine LustBig Grin

So als Anstoß hab ich mal den 1. Turm aufgestapelt. Weitestgehend variabel gestaltet.
Es wird nur der Erste Turm gefüllt. Das soll dir helfen dich mit den Paint Funktionen zurechtzufinden. Das Verschieben der Teile auf die anderen Türme bedeutet im einfachsten Fall (ohne das Verschieben zu animieren) einfach eine Neuzeichnung mit allen Türmen.

[attachment=30383][attachment=30384]

Lv09_img2[attachment=30385]


Gruß SeBa