Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Gleichungen mit lauter Unbekannten lösen


Andy71 - Mi 02.12.09 14:51
Titel: Gleichungen mit lauter Unbekannten lösen
Hallo

Ich hoffe, dass ich hier mit meinem Anliegen richtig bin.
Ich möchte mir ein kleines Tool schreiben, mit dem ich mehrere Gleichungen mit lauter Unbekannten lösen kann.
z.B.:
a b c - d e f = e f g
g h f - g f = a e i
d g * e f = f b g
a b c - g h f = d g
d e f / g f = e f
e f g + a e i = f b g

Das Tool soll herausfinden, welche Ziffer hinter welcher Variabeln steckt.
Leider habe ich grad keine Ahnung, wie ich die Sache angehen kann. Hat jemand einen einfachen, verständlichen Tipp für mich? Ich bin Anfänger was das Programmieren angeht und würde mich über Ansätze, die mich auf den richtigen Weg bringen freuen. Mein Gedanke ist, es mit Brute-Force zu lösen. Aber gibt es vielleicht einen einfacheren weg? Für Brute-Force brauche ich ja zwingend die Rekursion, die mir aber Schwierigkeiten bereitet, da ich sie noch nicht richtig verstehe.
Für jede Hilfe bin ich dankbar.

Gruß
Andy


Tilo - Mi 02.12.09 15:00

Zum lösen dieses Problem eignet sich sehr gut eine Interferenzmaschine.

Wenn Du die Interferenzmaschine nicht selber schreiben möchtes schau dir mal die Sprache ProLog an.

Hab in Delphi mal ein Programm geschrieben, welches Prolog Quellcode ausgeben hat.
Porblemstellung war das lösen von Rätseln wie HAUS+HAUS=STADT


Kha - Mi 02.12.09 15:09

:welcome:

Brute-Force ist in den allermeisten Fällen die einfachste Lösung ;) . Und Rekursion brauchst du dafür nicht unbedingt, denn jedwede Rekursion lässt sich auch durch Schleifen ausdrücken. In diesem Fall ganz naiv: Geschachtelt eine Schleife von 0 bis 9 für jeden Buchstaben, damit hast du alle 10^9 Kombinationen - keine ernstzunehmende Datenmenge für einen Computer. Reduzieren lässt sich der Aufwand, indem manche Variablen nicht durchprobiert, sondern durch andere ausgedrückt werden.

@Tilo: Meinst du möglicherweise eine Inferenzmaschine :zwinker: ?


Andy71 - Mi 02.12.09 16:00

Vielen Dank euch Beiden für die schnellen Antworten.

@Tilo
Prolog sieht interessant aus. Ich hab mir mal die Open-Source Variante PopLog installiert und schau es mir mal an. Trotzdem werde ich versuchen es selbst zu schreiben. Nur so kann man ja lernen.

@Kha
Ich werd es erstmal mit den geschachtelten Schleifen versuchen und irgendwann vielleicht die Rekursion verwenden, wenn ich das mal begriffen habe.


Tilo - Mi 02.12.09 17:10

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:


@Tilo: Meinst du möglicherweise eine Inferenzmaschine :zwinker: ?


ja, Blöde Orthografie

@Andy71

Für einige Prologversionen/Programme gibt es auch die Möglichkeit zur Steuerung aus Delphi-Programmen heraus.

Fals es Dich interessiert such ich mal den Quelltext dazu.
könnte aber etwas dauern, da der Quelle unter Umständen auf einer CD liegt.


Andy71 - Mi 02.12.09 17:22

Au ja, das wär nett. Die PopLog-Version ist leider nur für 32-Bit Systeme. Ich programmiere unter Win7 64-Bit. PopLog hab ich mir in VirtualPC installiert. Kennst du vielleicht eine freie Version von Prolog die man in einer 64-Bit Umgebung installieren kann?


Bergmann89 - Mi 02.12.09 20:35

Hey,

DAS [http://www.delphi-forum.de/viewtopic.php?t=93411] könnte dir auch helfen...

MfG Bergmann