Kann man folgendes als Algorithmus bezeichnen ?
-
Dann press mal dein Algorithmus in eine Formel.
-
Zeus schrieb:
Dann press mal dein Algorithmus in eine Formel.
*kopfschüttel*
jetzt verstehe ich das. Formeln sind doch einfach nur da um gegebenheiten
in Mathematik oder Physik zu bezeichnen/definieren.Mein Algorithmus z=x+y ist damit keine Formel, richtig?
-
bäd_marvin schrieb:
Zeus schrieb:
Dann press mal dein Algorithmus in eine Formel.
*kopfschüttel*
jetzt verstehe ich das. Formeln sind doch einfach nur da um gegebenheiten
in Mathematik oder Physik zu bezeichnen/definieren.Mein Algorithmus z=x+y ist damit keine Formel, richtig?
Das ist doch nur ein Teil deines Algorithmus.
-
Steffo schrieb:
bäd_marvin schrieb:
Zeus schrieb:
Dann press mal dein Algorithmus in eine Formel.
*kopfschüttel*
jetzt verstehe ich das. Formeln sind doch einfach nur da um gegebenheiten
in Mathematik oder Physik zu bezeichnen/definieren.Mein Algorithmus z=x+y ist damit keine Formel, richtig?
Das ist doch nur ein Teil deines Algorithmus.
Und damit sollte mir langsam klar sein, was ein Algorithmus ist
Thx an alle und gudde night
-
Ein Algorithmus ist eine Struktur (allg.), die Daten auf eine bestimmte Art und Weise verarbeitet.
-
Man lese den 1. Satz von
http://de.wikipedia.org/wiki/AlgorithmusViel einfacher und klarer kann man es nicht erklären.
Das im ersten Beitrag Gezeigte ist daher IMO kein Algorithmus, da nicht eindeutig (es ist nicht beschrieben was "Eingabe -> Lesen()", "Addieren()" etc. bedeuten).
Wenn man darüber hinwegsieht könnte man es aber vermutlich als Algorithmus bezeichnen.Genau so wie "RET" in vielen Assembler-Dialekten ein vollständiges, gültiges Programm ist
-
Unser Prof hat immer gesagt, dass ein Algorithmus wie ein Kochrezept ist.
-
Drawer schrieb:
Unser Prof hat immer gesagt, dass ein Algorithmus wie ein Kochrezept ist.
Ja und Nein. Im Prinzip stimmt das schon aber Kochrezepte sind meistens viel zu ungenau als dass man es als Algorithmus bezeichnen kann.
*Edit
Mein Prof hat dafuer sogar extra in der Vorlesung gekocht um das zu veranschaulichen. War ne graessliche Vorlesung... ^^
-
LOL
Hat er alles falsch interpretiert, was man nur falsch interpretieren konnte?
-
Man könnte noch die 4 - bzw. 5 - Eigenschaften erwähnen, die ein Algorithmus enthalten sollte:
- Allgemeingültigkeit
- Eindeutigkeit
- Endlichkeit
- Ausführbarkeit
- (Effiziens)
-
icarus2 schrieb:
Drawer schrieb:
Unser Prof hat immer gesagt, dass ein Algorithmus wie ein Kochrezept ist.
Ja und Nein. Im Prinzip stimmt das schon aber Kochrezepte sind meistens viel zu ungenau als dass man es als Algorithmus bezeichnen kann.
Aber VIEL genauer, als die meisten sonst so im Alltag vorkommende Arbeitsanweisungen. Das Beispiel ist gut.
-
FreakY<3Cpp schrieb:
Man könnte noch die 4 - bzw. 5 - Eigenschaften erwähnen, die ein Algorithmus enthalten sollte:
- Allgemeingültigkeit
- Eindeutigkeit
- Endlichkeit
- Ausführbarkeit
- (Effiziens)
Endlichkeit? Ausführbarkeit? Ich hab mich nie mit einer formalen Definition des Wortes "Algorithmus" beschäftigt, aber das würde dann Dinge wie aufzählende Turingmaschinen (Endlichkeit) oder allgemein Turingmaschinen (praktische Ausführbarkeit) verbieten. Und was verstehst du unter Allgemeindeutigkeit? Effizienz ist auf jeden Fall nicht nötig für einen Algorithmus.
-
@Drawer
Im Rezept stand, dass man die Pfanne 30 Minuten auf den Herd stellen muss aber nicht, dass man den Herd auch einschalten muss. ^^
Wie gesagt. Die Vorlesung war schlimm.@volkard
Ich sage nicht, dass das Beispiel schlecht ist. Ich finde es gut und wird auch in vielen Buechern verwendet. Mann muss dann halt nur sagen, dass ein Kochrezept oftmals zu ungenau ist fuer einen Computer.
-
Mit Endlichkeit meine ich, dass der Algorithmus in endlich vielen Anweisungen beschreibbar und in endlicher Zeit eine Ausgabe erzeugen muss. Die Erklärung für Ausführbarkeit klingt wohl etwas "schwachsinnig", aber man versteht darunter, dass es ein Prozessor(Maschine) oder Mensch existieren muss, der den Algorithmus durchführen kann und für diesen jede einzelne Anweisung verständlich ist. Und mit Allgemeingültigkeit ist gemeint, dass der Algorithmus für eine Anzahl gleichartiger Probleme anwendbar sein sollte. Effiziens ist extra in klammern geschrieben, da es kein notwendiges Kriterium ist.
Hier kann man die Eigenschaften nochmal nachlesen, nur mit anderen Begriffen.
-
FreakY<3Cpp schrieb:
Mit Endlichkeit meine ich, dass der Algorithmus in endlich vielen Anweisungen beschreibbar und in endlicher Zeit eine Ausgabe erzeugen muss.
Eine Ausgabe erzeugen muss oder terminieren muss? Mit letzterem wäre ich nicht einverstanden, siehe z.B. Turingmaschinen, die Sprachen aufzählen.
Die Erklärung für Ausführbarkeit klingt wohl etwas "schwachsinnig", aber man versteht darunter, dass es ein Prozessor(Maschine) oder Mensch existieren muss, der den Algorithmus durchführen kann und für diesen jede einzelne Anweisung verständlich ist.
Zählen auch Gedankenexperimente? Denn Turingmaschinen kann man nicht bauen.
-
Michael E. schrieb:
FreakY<3Cpp schrieb:
Mit Endlichkeit meine ich, dass der Algorithmus in endlich vielen Anweisungen beschreibbar und in endlicher Zeit eine Ausgabe erzeugen muss.
Eine Ausgabe erzeugen muss oder terminieren muss? Mit letzterem wäre ich nicht einverstanden, siehe z.B. Turingmaschinen, die Sprachen aufzählen.
Terminiertheit
Terminiertheit heißt: Ein Algorithmus hält nach endlich vielen Schritten an (bricht kontrolliert ab). Dies gilt für jede mögliche Eingabe. Würde ein Algorithmus nicht terminieren (und somit zu keinem Ergebnis kommen), wäre die Folge eine so genannte Endlosschleife.
Michael E. schrieb:
FreakY<3Cpp schrieb:
Die Erklärung für Ausführbarkeit klingt wohl etwas "schwachsinnig", aber man versteht darunter, dass es ein Prozessor(Maschine) oder Mensch existieren muss, der den Algorithmus durchführen kann und für diesen jede einzelne Anweisung verständlich ist.
Zählen auch Gedankenexperimente? Denn Turingmaschinen kann man nicht bauen.
Naja, ein Algorithmus, der nicht ausgeführt werden kann, ist für mich dann kein Algortihmus, denn:
Ein Algorithmus ist eine aus endlich vielen Schritten bestehende eindeutige Handlungsvorschrift zur Lösung eines Problems[...]
Und wenn mir diese "Handlungsvorschrift" das Problem nicht löst, da ich es nicht ausführen kann, habe ich kein Algorithmus.
-
So, ich hab mir mal die Definition auf Wikipedia durchgelesen.
FreakY<3Cpp schrieb:
Michael E. schrieb:
Eine Ausgabe erzeugen muss oder terminieren muss? Mit letzterem wäre ich nicht einverstanden, siehe z.B. Turingmaschinen, die Sprachen aufzählen.
Terminiertheit
Terminiertheit heißt: Ein Algorithmus hält nach endlich vielen Schritten an (bricht kontrolliert ab). Dies gilt für jede mögliche Eingabe. Würde ein Algorithmus nicht terminieren (und somit zu keinem Ergebnis kommen), wäre die Folge eine so genannte Endlosschleife.
Nach Definition muss ein Algorithmus nicht auf jeder Eingabe terminieren. Sonst wäre das weiter unten erwähnte Halteproblem auch trivial.
Michael E. schrieb:
FreakY<3Cpp schrieb:
Die Erklärung für Ausführbarkeit klingt wohl etwas "schwachsinnig", aber man versteht darunter, dass es ein Prozessor(Maschine) oder Mensch existieren muss, der den Algorithmus durchführen kann und für diesen jede einzelne Anweisung verständlich ist.
Zählen auch Gedankenexperimente? Denn Turingmaschinen kann man nicht bauen.
Naja, ein Algorithmus, der nicht ausgeführt werden kann, ist für mich dann kein Algortihmus, denn:
Ein Algorithmus ist eine aus endlich vielen Schritten bestehende eindeutige Handlungsvorschrift zur Lösung eines Problems[...]
Und wenn mir diese "Handlungsvorschrift" das Problem nicht löst, da ich es nicht ausführen kann, habe ich kein Algorithmus.
Hier stimmst du auch nicht mit der Wikipedia-Definition überein, weil diese Turingmaschinen benutzt, welche man nicht bauen kann.
-
Jedes Programm das auf einer Turingmaschine (oder sonstwo) läuft, und in endlicher Zeit terminiert, kann nur endlich viele Felder/Zellen des Bandes (bzw. allgemein: Resourcen) benötigen.
Und abgesehen vom unendlichen Band, weiss ich jetzt keinen Grund, warum man eine Turingmaschine nicht bauen können sollte.
-
-
hustbaer schrieb:
Jedes Programm das auf einer Turingmaschine (oder sonstwo) läuft, und in endlicher Zeit terminiert, kann nur endlich viele Felder/Zellen des Bandes (bzw. allgemein: Resourcen) benötigen.
Dieses "endlich viele" kann aber mehr sein als es Atome auf der Erde gibt.
Und abgesehen vom unendlichen Band, weiss ich jetzt keinen Grund, warum man eine Turingmaschine nicht bauen können sollte.
Du nennst ja selbst den Grund.