Was genau ist ein Algorithmus, wie in was bedeutet Algorithmus? Das Wenige, was ich verstehe, ist, dass es nicht spezifisch für eine bestimmte Sprache oder ein bestimmtes Designmuster ist, sondern eines der grundlegendsten Prinzipien (ich denke, diese Frage lässt mich dumm aussehen).
Eine der "Möglichkeiten", die ich zu verstehen habe, ist, dass es die Methode bedeutet, etwas zu erledigen, das als Liste im Pseudocode geschrieben werden könnte.
Wenn ich komplizierten Code schreibe, denke ich, was mit was zu tun ist und wie ich dahin komme (nicht in einer Programmiersprache), dann schreibe ich das in Code. Ist das ein guter Weg, und hat das etwas mit Algorithmen zu tun?
(Ich wollte hier eher nach Stackoverflow fragen, weil es sich nicht um ein bestimmtes Problem / eine bestimmte Sprache handelt. Außerdem habe ich das Gefühl, dass die Mehrheit der Leute hier das Warum oder zumindest die Antworten hier detaillierter sind, als nach Stackoverflow wo es anders ist, tut mir leid wenn ich dort hätte fragen sollen)
quelle
Antworten:
Ein Algorithmus ist eine endliche Folge wohldefinierter Anweisungen zum Berechnen einer Funktion (oder zum Ausführen einer Prozedur), die in einem wohldefinierten Endzustand endet.
quelle
Dies ist eigentlich eine ziemlich interessante Frage, und in der Tat immer noch eine offene Forschungsfrage.
Yuri Gurevich, einer der Giganten der Algorithmentheorie, hält derzeit eine Videovortragsreihe auf der Microsoft-Community-Website Channel9:
Wie Sie sehen, ist Ihre eigentliche Frage der Titel der zweiten Vorlesung. Ich würde Ihnen jedoch dringend empfehlen, sich alle drei anzuschauen.
Insbesondere die erste enthält einige Beispiele für Algorithmen, die so gut wie alle Definitionen ungültig machen, die in den meisten anderen Antworten angegeben sind.
quelle
Ein Algorithmus ist wie ein gutes Kochrezept . Sie haben einige Eingaben, einige gut definierte Zwischenschritte und erhalten ein Endergebnis.
Angewandt auf die Programmierung ist dies eine eindeutige Beschreibung der Schritte, die Sie zur Lösung eines bestimmten Problems ausführen müssen. Alles, was Sie in der Programmiersprache Ihrer Wahl aufschreiben können, kann als Algorithmus angesehen werden. In der Regel wird der Begriff jedoch nur für allgemeine logische oder mathematische Aufgaben wie Sortieren oder Suchen verwendet.
quelle
Ein Algorithmus ist ein Satz von Regeln oder Prozessen (in einer Berechnung), die zur Problemlösung verwendet werden. Grundsätzlich gibt es ein Problem, Sie möchten eine Lösung, und der Prozess für diese Lösung ist ein Algorithmus. Ein Algorithmus hat eine endliche Anzahl von Regeln / Prozessen, um zu einer Lösung zu gelangen.
Wenn Sie wie Edsger W. Dijkstra sind , schreiben Sie Ihren Algorithmus auf ein Blatt Papier und erarbeiten / verfeinern den Algorithmus auf Papier, bis Sie mit Ihren Algorithmen zufrieden sind. Andernfalls (insbesondere beim Schreiben von Dokumentationen) wird ein Ablaufdiagramm verwendet, um den Ablauf eines Algorithmus / Prozesses grafisch darzustellen. Dies ermöglicht es anderen, das Ablaufdiagramm zu kritisieren und gegebenenfalls zu verbessern (ohne sich Gedanken darüber zu machen, welche Programmiersprache benötigt wird).
Ich weiß nicht, ob das deine Frage beantwortet.
quelle
Algorithmus: Eine gut geordnete Menge von Operationen, die 1) eindeutig und 2) effektiv berechenbar sind, so dass die Ausführung der Operationen ab der ersten ein Ergebnis nach einer endlichen Anzahl von Operationen ergibt.
quelle
Algorithmus Hierbei handelt es sich um die Kombination von aufeinanderfolgenden Schritten (diese Schritte können Berechnungen, Datenverarbeitung und Argumentationsaufgaben sein), mit denen ein Problem auf sehr einfache und effiziente Weise gelöst werden kann.
Es ist so effizient gestaltet, dass es in einer begrenzten Menge an Raum und Zeit ausgedrückt werden kann. Wir können es in jeder Programmiersprache implementieren.
Eigenschaften eines Algorithmus: Im Folgenden sind die Haupteigenschaften eines Algorithmus aufgeführt:
Ein Algorithmus muss einen eindeutigen Namen haben. Es sollte explizit definierte Sätze von Ein- und Ausgängen haben. Ein Algorithmus muss in sequentieller Reihenfolge mit eindeutigen Operationen vorliegen. Es muss einen Endpunkt haben, dh es hält in einer endlichen Zeitspanne an. Klicken Sie hier, um mehr über Entwurf und Analyse von Algorithmen zu erfahren
quelle
Ich benutze den Begriff, um eine Formel zur Lösung eines bestimmten Problems zu beschreiben. Die Formel muss nicht unbedingt in Mathematik geschrieben sein oder eine 1: 1-Beziehung zu einer Methode haben. In der Schule sind Algorithmen und Datenstrukturen eng miteinander verwandt und können als mathematische Formeln geschrieben oder mit Beweisen bewiesen werden.
quelle
Ein Algorithmus ist eine Abstraktion eines Computerprogramms und besteht aus einer Reihe von Anweisungen, mit denen eine genau definierte Aufgabe in einer begrenzten Anzahl von Schritten ausgeführt werden kann. endliche) Aufgaben für sich. Obwohl es (korrekte) Programme gibt, die allgemein als nicht algorithmisch bekannt sind, funktionieren sie alle, indem sie algorithmische Teile in einem bestimmten Muster wiederholen. (Interessanter sind die Programme, deren Beendigungsstatus nicht bekannt ist, aber die meisten Programmierer setzen sich nicht absichtlich mit solchen Dingen auseinander; ich weiß, dass ich das nicht tue!)
quelle
IMO weiß das niemand so recht :) Ich habe gesehen, dass der Begriff nur auf mathematische Berechnungsfunktionen angewendet wird, auf jede Funktion, die Eingaben entgegennimmt und Ausgaben erzeugt, und auf alles , was Eingaben entgegennimmt und irgendeine Operation darauf ausführt.
Würden Sie Folgendes als Algorithmus betrachten?
finder
Funktion, die eine Datenbank nach einem Kundenobjekt abfragtquelle
Ein Algorithmus ist eine Idee, eine Methode, eine Technik, "smarts" zur Berechnung oder Ausführung einer Aufgabe, die abstrakter Natur ist. Da sie jedoch auf Computern in der realen Welt ausgeführt wird, streben wir danach, so wenig Ressourcen wie möglich zu verwenden Das sind in der Computerwelt Zeit und Erinnerung.
quelle
Ein Algorithmus ist eine Folge von genau definierten Schritten, die in endlicher Zeit ein Ergebnis liefern.
Gut definierter Schritt: Das können Sie genau definieren oder berechnen. Wenn Sie den Schritt lesen, wissen Sie, was Sie tun müssen und wie Sie es tun müssen. Insbesondere können Sie es in einer Programmiersprache schreiben, die Sie kennen, und sicherstellen, dass das Programmfragment genau mit dem Schritt übereinstimmt.
Reihenfolge: Die Schritte werden in einer angegebenen Reihenfolge ausgeführt. Schritte können abhängig von den Daten mehrmals ausgeführt werden (Schleifen) oder überhaupt nicht ausgeführt werden, abhängig von den Daten (if-Anweisungen). Parallele Algorithmen erlegen den Schritten nur eine Teilreihenfolge auf, daher bin ich hier zu stark vereinfacht. Es wäre korrekter, es als eine teilweise geordnete Menge als eine Sequenz zu beschreiben, aber ich wollte die Wörter ein wenig einfacher halten. Außerdem ist es leicht möglich, ein teilweise geordnetes Set in eine vollständige Reihenfolge einzubetten.
Ergebnis: Ein Endzustand oder Wert. Es muss nicht vorhersehbar sein, aber es muss ein definitives Ende sein, das eine Bedingung erfüllt. Dies bedeutet, dass ein Betriebssystem kein Algorithmus ist, obwohl es viele davon verwendet.
Endlich: Ein Algorithmus wird garantiert irgendwann anhalten, zumindest auf einer Maschine, die lange genug laufen kann. Es ist nicht unbedingt garantiert, dass das System in einer vorhersehbaren Zeit anhält, und es ist nicht garantiert, dass es anhält, bevor die Sonne sich ausdehnt und auf einer vorhandenen Maschine rot wird. Dies bedeutet auch, dass ein Betriebssystem kein Algorithmus ist, da es im Idealfall für immer ausgeführt wird. Ich habe das Wort "Prozedur" gesehen, das verwendet wird, um etwas zu beschreiben, das ein Algorithmus wäre, wenn wir sicher wären, dass es irgendwann aufhören würde. (Es ist möglich, einen Algorithmus zu haben, der in einer unbekannten Zeitspanne stoppt. Nehmen wir an, Goldbachs Vermutung wurde in einem nichtkonstruktiven Beweis mathematisch als falsch bewiesen, sodass es eine gerade Zahl> 2 gab, die nicht die Summe zweier Primzahlen war Ein Algorithmus, der einfach gerade Zahlen testet, würde dann irgendwann enden.
Der Algorithmus ist eine absichtlich abstrakte Art von Dingen, daher betrachten wir keine Fragen wie "Ist es physikalisch möglich, dies vor dem Tod des Universums auszuführen?". Sie wären zu schwer zu beantworten. Wenn es sich um Computeroperationen handelt, ist es einfach, sie in einer Programmiersprache zu implementieren.
quelle
Wenn ich eine allgemeine Definition geben müsste, würde ich sagen, ein Algorithmus ist eine Formel zum Lösen eines Computerproblems, das komplexer als die offensichtliche Brute-Force-Lösung ist und am Ende effizienter als diese ist.
Es ist auch wichtig zu beachten, dass ein Algorithmus kein spezifischer Quellcode ist. Es ist die Berechnung selbst. Dies bedeutet unter anderem, dass jede Turing-vollständige Sprache jeden Algorithmus implementieren kann, den jede andere Turing-vollständige Sprache implementieren kann.
quelle