Commit abb4759a authored by Amin Raslan's avatar Amin Raslan
Browse files

Replace schlussfolgerung.tex

parent a9914fca
\section{Schlussfolgerung}
\ No newline at end of file
\section{Schlussfolgerung}
\label{section:schlussfolgerung}
Nach dem Vergleich von 14 Modellen in CLP(FD) und MiniZinc in Kapitel~\ref{section:vergleich_von_implementierungen} (\emph{Vergleich von Implementierungen}) stellt es sich heraus, dass jede der beiden Sprachen Vorteile in bestimmten Bereichen hat.
In MiniZinc werden Daten- und Kontrollstrukturen sowie mathematische Notationen und Funktionen verwendet, die den Programmierern, die sich mit der Mathematik und mit anderen berühmten Programmiersprachen wie Java und C auskennen, bekannt vorkommen können. Deswegen könnte MiniZinc am Anfang einfacher erscheinen, wenn der Benutzer die Programmiersprache Prolog nicht kennt.
Weiterhin ist es einfacher, mit Arrays anstatt mit Listen in CLP(FD) zu arbeiten, denn der Zugriff auf ein bestimmtes Element erfolgt direkt mit Indizes. Wenn man hingegen auf ein bestimmtes Element in einer Liste in CLP(FD) zugreifen möchte, so muss man die Liste beginnend vom ersten Element komplett durchlafen, bis man das gewünschte Element erreicht hat.
In allen Modellen (außer Subset Sum, wenn es keine Lösung existiert) ist CLP(FD) schneller als MiniZinc. Dies könnte daran liegen, dass die MiniZinc-Modelle zuerst in FlatZinc-Modelle übersetzt werden müssen, da die Solver mit FlatZinc arbeiten, wie in Kapitel~\ref{section:hintergrundwissen} erwähnt ist. Auf der anderen Seite arbeitet CLP(FD) mit Domänenreduktion und Backtracking, was der Grund sein könnte, warum CLP(FD) deutlich schneller ist. In Subset Sum ist MiniZinc schneller als CLP(FD), wenn für die Eingabe keine Lösung existiert, wie vorher erwähnt ist. Dies könnte daran liegen, dass alle möglichen Kombinationen der Elemente in der gegebenen Menge probiert werden, bis es sich dann herausstellt, dass es keine Lösung existiert. In solchem Fall ist die Domänenreduktion vermutlich langsamer. Außerdem ist es zu beachten, dass die MiniZinc-Modelle langsamer werden, wenn Arrays verwendet werden, anstatt die Variablen einzeln zu definieren.
In manchen Modellen werden mehrere Variablen mit der selben Domäne benötigt. In CLP(FD) wird für diese Variablen eine Liste erstellt. Innerhalb dieser Liste können diese Variablen nach Wunsch benannt werden. In MiniZinc werden diese Variablen hingegen in der Regen einzeln definiert. Je mehr Variablen benötigt werden, desto länger wird das MiniZinc-Modell. Es könnte auch ein Array für diese Variablen in MiniZinc erstellt. Jedoch können die Varibalen dann nicht mehr benannt werden. Außerdem sind die MiniZinc-Modelle dann langsamer, wie vorher erwähnt wurde.
Auf der anderen Seite, wird \emph{labeling} größer, je mehr Variablen benötigt werden, wie in Zebra Puzzle~\ref{section:zebra_puzzle} zu sehen ist. In MiniZinc mit \emph{solve satisfy} ist dies nicht der Fall.
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment