Was ist ein Algorithmus | Einführung in Algorithmen
Definition des Algorithmus
Das Wort Algorithmus bedeutet Ein Satz endlicher Regeln oder Anweisungen, die bei Berechnungen oder anderen Problemlösungsvorgängen befolgt werden müssen
Oder
Ein Verfahren zur Lösung eines mathematischen Problems in endlich vielen Schritten, das häufig rekursive Operationen umfasst .
Daher bezieht sich der Algorithmus auf eine Folge endlicher Schritte zur Lösung eines bestimmten Problems.
Verwendung der Algorithmen:
Algorithmen spielen in verschiedenen Bereichen eine entscheidende Rolle und haben viele Anwendungen. Zu den Schlüsselbereichen, in denen Algorithmen eingesetzt werden, gehören:
- Informatik: Algorithmen bilden die Grundlage der Computerprogrammierung und werden zur Lösung von Problemen eingesetzt, die vom einfachen Sortieren und Suchen bis hin zu komplexen Aufgaben wie künstlicher Intelligenz und maschinellem Lernen reichen.
- Mathematik: Algorithmen werden verwendet, um mathematische Probleme zu lösen, beispielsweise um die optimale Lösung für ein System linearer Gleichungen zu finden oder um den kürzesten Weg in einem Diagramm zu finden.
- Unternehmensforschung : Algorithmen werden zur Optimierung und Entscheidungsfindung in Bereichen wie Transport, Logistik und Ressourcenallokation eingesetzt.
- Künstliche Intelligenz: Algorithmen sind die Grundlage für künstliche Intelligenz und maschinelles Lernen und werden zur Entwicklung intelligenter Systeme verwendet, die Aufgaben wie Bilderkennung, Verarbeitung natürlicher Sprache und Entscheidungsfindung ausführen können.
- Datenwissenschaft: Algorithmen werden verwendet, um große Datenmengen in Bereichen wie Marketing, Finanzen und Gesundheitswesen zu analysieren, zu verarbeiten und daraus Erkenntnisse zu gewinnen.
Dies sind nur einige Beispiele für die vielfältigen Einsatzmöglichkeiten von Algorithmen. Der Einsatz von Algorithmen nimmt mit dem Aufkommen neuer Technologien und Bereiche ständig zu und ist damit ein wichtiger Bestandteil der modernen Gesellschaft.
Algorithmen können einfach und komplex sein, je nachdem, was Sie erreichen möchten.
Dies kann am Beispiel des Kochens eines neuen Rezepts verstanden werden. Um ein neues Rezept zu kochen, liest man die Anweisungen und Schritte und führt sie nacheinander in der vorgegebenen Reihenfolge aus. Das so erzielte Ergebnis ist, dass das neue Gericht perfekt gegart ist. Jedes Mal, wenn Sie Ihr Telefon, Ihren Computer, Ihren Laptop oder Ihren Taschenrechner verwenden, verwenden Sie Algorithmen. In ähnlicher Weise helfen Algorithmen dabei, eine Aufgabe in der Programmierung zu erledigen, um die erwartete Ausgabe zu erhalten.
Der entworfene Algorithmus ist sprachunabhängig, d. h. es handelt sich lediglich um einfache Anweisungen, die in jeder Sprache implementiert werden können, und dennoch wird die Ausgabe erwartungsgemäß dieselbe sein.
Wofür werden Algorithmen benötigt?
- Algorithmen sind notwendig, um komplexe Probleme effizient und effektiv zu lösen.
- Sie tragen dazu bei, Prozesse zu automatisieren und sie zuverlässiger, schneller und einfacher durchführbar zu machen.
- Algorithmen ermöglichen es Computern auch, Aufgaben auszuführen, die für Menschen manuell nur schwer oder gar nicht zu erledigen wären.
- Sie werden in verschiedenen Bereichen wie Mathematik, Informatik, Ingenieurwesen, Finanzen und vielen anderen eingesetzt, um Prozesse zu optimieren, Daten zu analysieren, Vorhersagen zu treffen und Lösungen für Probleme bereitzustellen.
Was sind die Merkmale eines Algorithmus?
Da man zum Kochen des Rezepts keine schriftlichen Anweisungen befolgen würde, sondern nur das Standardrezept. Ebenso sind nicht alle schriftlichen Anweisungen zur Programmierung ein Algorithmus. Damit einige Anweisungen ein Algorithmus sind, müssen sie die folgenden Eigenschaften aufweisen:
- Klar und eindeutig : Der Algorithmus sollte eindeutig sein. Jeder seiner Schritte sollte in allen Aspekten klar sein und darf nur zu einer Bedeutung führen.
- Gut definierte Eingaben : Wenn ein Algorithmus angibt, Eingaben entgegenzunehmen, sollten es wohldefinierte Eingaben sein. Es kann Eingaben annehmen oder auch nicht.
- Gut definierte Ausgaben: Der Algorithmus muss klar definieren, welche Ausgabe erzielt wird, und er sollte auch klar definiert sein. Es sollte mindestens 1 Ausgabe erzeugen.
- Endlichkeit: Der Algorithmus muss endlich sein, d. h. er sollte nach einer endlichen Zeit terminieren.
- Machbar: Der Algorithmus muss einfach, generisch und praktisch sein, sodass er mit den verfügbaren Ressourcen ausgeführt werden kann. Es darf keine Zukunftstechnologie oder ähnliches enthalten.
- Sprachunabhängig: Der entworfene Algorithmus muss sprachunabhängig sein, d. h. es muss sich nur um einfache Anweisungen handeln, die in jeder Sprache implementiert werden können, und dennoch wird die Ausgabe erwartungsgemäß dieselbe sein.
- Eingang : Ein Algorithmus hat null oder mehr Eingaben. Jeder Operator, der einen Grundoperator enthält, muss null oder mehr Eingaben akzeptieren.
- Ausgabe : Ein Algorithmus erzeugt mindestens eine Ausgabe. Jede Anweisung, die einen grundlegenden Operator enthält, muss null oder mehr Eingaben akzeptieren.
- Bestimmtheit: Alle Anweisungen in einem Algorithmus müssen eindeutig, präzise und leicht zu interpretieren sein. Indem man sich auf eine der Anweisungen in einem Algorithmus bezieht, kann man klar verstehen, was zu tun ist. Jeder grundlegende Operator im Unterricht muss eindeutig definiert sein.
- Endlichkeit: Ein Algorithmus muss in allen Testfällen nach einer endlichen Anzahl von Schritten terminieren. Jede Anweisung, die einen grundlegenden Operator enthält, muss innerhalb einer endlichen Zeitspanne beendet werden. Endlosschleifen oder rekursive Funktionen ohne Grundbedingungen besitzen keine Endlichkeit.
- Wirksamkeit: Ein Algorithmus muss unter Verwendung sehr grundlegender, einfacher und realisierbarer Operationen entwickelt werden, damit man ihn nur mit Papier und Bleistift nachzeichnen kann.
Eigenschaften des Algorithmus:
- Es sollte nach einer endlichen Zeit enden.
- Es sollte mindestens eine Ausgabe erzeugen.
- Es sollte keine oder mehr Eingaben erfordern.
- Es sollte deterministisch sein, was bedeutet, dass für denselben Eingabefall die gleiche Ausgabe erfolgt.
- Jeder Schritt im Algorithmus muss effektiv sein, d. h. jeder Schritt sollte etwas Arbeit leisten.
Arten von Algorithmen:
Es stehen verschiedene Arten von Algorithmen zur Verfügung. Einige wichtige Algorithmen sind:
1. Brute-Force-Algorithmus :
Es ist die einfachste Herangehensweise an ein Problem. Ein Brute-Force-Algorithmus ist der erste Ansatz, um herauszufinden, wann wir ein Problem sehen.
2. Rekursiver Algorithmus :
Ein rekursiver Algorithmus basiert auf Rekursion . Dabei wird ein Problem in mehrere Unterteile zerlegt und immer wieder dieselbe Funktion aufgerufen.
3. Backtracking-Algorithmus :
Der Backtracking-Algorithmus erstellt die Lösung, indem er alle möglichen Lösungen durchsucht. Mit diesem Algorithmus bauen wir die Lösung nach Kriterien weiter auf. Wenn eine Lösung fehlschlägt, gehen wir zurück zum Fehlerpunkt, bauen auf der nächsten Lösung auf und setzen diesen Prozess fort, bis wir die Lösung gefunden haben oder alle möglichen Lösungen berücksichtigt sind.
4. Suchalgorithmus :
Suchalgorithmen werden zum Durchsuchen von Elementen oder Elementgruppen aus einer bestimmten Datenstruktur verwendet. Sie können je nach Ansatz oder der Datenstruktur, in der das Element gefunden werden soll, unterschiedlicher Art sein.
5. Sortieralgorithmus :
Beim Sortieren wird eine Gruppe von Daten entsprechend den Anforderungen auf eine bestimmte Weise angeordnet. Die Algorithmen, die bei der Ausführung dieser Funktion helfen, werden Sortieralgorithmen genannt. Im Allgemeinen werden Sortieralgorithmen verwendet, um Datengruppen aufsteigend oder absteigend zu sortieren.
6. Hashing-Algorithmus :
Hashing-Algorithmen funktionieren ähnlich wie der Suchalgorithmus. Sie enthalten jedoch einen Index mit einer Schlüssel-ID. Beim Hashing wird bestimmten Daten ein Schlüssel zugewiesen.
7. Divide-and-Conquer-Algorithmus :
Dieser Algorithmus zerlegt ein Problem in Teilprobleme, löst ein einzelnes Teilproblem und führt die Lösungen zusammen, um die endgültige Lösung zu erhalten. Es besteht aus den folgenden drei Schritten:
- Teilen
- Lösen
- Kombinieren
8. Gieriger Algorithmus :
Bei dieser Art von Algorithmus wird die Lösung Teil für Teil erstellt. Die Lösung für den nächsten Teil basiert auf dem unmittelbaren Nutzen des nächsten Teils. Diejenige Lösung, die den größten Nutzen bringt, wird als Lösung für den nächsten Teil ausgewählt.
9. Dynamischer Programmieralgorithmus :
Dieser Algorithmus nutzt das Konzept, die bereits gefundene Lösung zu verwenden, um eine wiederholte Berechnung desselben Teils des Problems zu vermeiden. Es unterteilt das Problem in kleinere, überlappende Teilprobleme und löst diese.
10. Randomisierter Algorithmus :
Im randomisierten Algorithmus verwenden wir eine Zufallszahl, sodass ein sofortiger Nutzen entsteht. Die Zufallszahl hilft bei der Entscheidung über das erwartete Ergebnis.
Weitere Informationen zu den Arten von Algorithmen finden Sie im Artikel über Arten von Algorithmen .
Vorteile von Algorithmen:
- Es ist leicht zu verstehen.
- Ein Algorithmus ist eine schrittweise Darstellung einer Lösung für ein gegebenes Problem.
- In einem Algorithmus wird das Problem in kleinere Teile oder Schritte zerlegt, sodass es für den Programmierer einfacher ist, es in ein tatsächliches Programm umzuwandeln.
Nachteile von Algorithmen :
- Das Schreiben eines Algorithmus dauert lange und ist daher zeitaufwändig.
- Komplexe Logik mithilfe von Algorithmen zu verstehen, kann sehr schwierig sein.
- Verzweigungs- und Schleifenanweisungen sind in Algorithmen schwer darzustellen (Kobold) .
Wie entwerfe ich einen Algorithmus?
Um einen Algorithmus zu schreiben, sind folgende Voraussetzungen erforderlich:
- Der Problem das durch diesen Algorithmus gelöst werden soll, d.h. klare Problemdefinition.
- Der Einschränkungen Bei der Lösung des Problems müssen die einzelnen Aspekte des Problems berücksichtigt werden.
- Der Eingang ergriffen werden, um das Problem zu lösen.
- Der Ausgabe zu erwarten ist, wenn das Problem gelöst ist.
- Der Lösung Die Lösung dieses Problems liegt innerhalb der gegebenen Grenzen.
Anschließend wird der Algorithmus mit Hilfe der oben genannten Parameter so geschrieben, dass er das Problem löst.
Beispiel: Betrachten Sie das Beispiel, drei Zahlen zu addieren und die Summe auszugeben.
Schritt 1: Erfüllung der Voraussetzungen
Wie oben erläutert, müssen zum Schreiben eines Algorithmus seine Voraussetzungen erfüllt sein.
- Das Problem, das durch diesen Algorithmus gelöst werden soll : Addiere 3 Zahlen und drucke ihre Summe aus.
- Die Einschränkungen des Problems, die bei der Lösung des Problems berücksichtigt werden müssen : Die Zahlen dürfen nur Ziffern und keine anderen Zeichen enthalten.
- Die Eingabe, die zur Lösung des Problems erforderlich ist: Die drei hinzuzufügenden Zahlen.
- Die zu erwartende Ausgabe, wenn das Problem gelöst ist: Die Summe der drei als Eingabe verwendeten Zahlen, d. h. ein einzelner ganzzahliger Wert.
- Die Lösung für dieses Problem unter den gegebenen Einschränkungen: Die Lösung besteht darin, die 3 Zahlen zu addieren. Dies kann mit Hilfe des „+“-Operators, bitweise oder einer anderen Methode erfolgen.
Schritt 2: Entwerfen des Algorithmus
Lassen Sie uns nun den Algorithmus mithilfe der oben genannten Voraussetzungen entwerfen:
Algorithmus zum Addieren von 3 Zahlen und Drucken ihrer Summe:
- START
- Deklarieren Sie drei Ganzzahlvariablen num1, num2 und num3.
- Nehmen Sie die drei hinzuzufügenden Zahlen als Eingaben in die Variablen num1, num2 und num3.
- Deklarieren Sie eine ganzzahlige Variable sum, um die resultierende Summe der drei Zahlen zu speichern.
- Addiere die 3 Zahlen und speichere das Ergebnis in der Variablen sum.
- Drucken Sie den Wert der Variablensumme aus
- ENDE
Schritt 3: Testen des Algorithmus durch Implementierung.
Um den Algorithmus zu testen, implementieren wir ihn in der Sprache C.
Programm:
C++ // C++ program to add three numbers // with the help of above designed // algorithm #include using namespace std; int main() { // Variables to take the input of // the 3 numbers int num1, num2, num3; // Variable to store the resultant sum int sum; // Take the 3 numbers as input cout < < 'Enter the 1st number: '; cin>> num1; cout < < ' ' < < num1 < < endl; cout < < 'Enter the 2nd number: '; cin>> num2; cout < < ' ' < < num2 < < endl; cout < < 'Enter the 3rd number: '; cin>> num3; cout < < ' ' < < num3; // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; // Print the sum cout < < '
Sum of the 3 numbers is: ' < < sum; return 0; } // This code is contributed by shivanisinghss2110> C // C program to add three numbers // with the help of above designed algorithm #include int main() { // Variables to take the input of the 3 numbers int num1, num2, num3; // Variable to store the resultant sum int sum; // Take the 3 numbers as input printf('Enter the 1st number: '); scanf('%d', &num1); printf('%d
', num1); printf('Enter the 2nd number: '); scanf('%d', &num2); printf('%d
', num2); printf('Enter the 3rd number: '); scanf('%d', &num3); printf('%d
', num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; // Print the sum printf('
Sum of the 3 numbers is: %d', sum); return 0; }> Java // Java program to add the three numbers // with the help of above designed // algorithm import java.util.*; class GFG { public static void main(String[] args) { // Variable to store the resultant sum int sum = 0; // Declare the object and initialize with // predefined standard input object Scanner sc = new Scanner(System.in); // Scanner definition // Variables to take the input of // the 3 numbers System.out.println('Enter the 1st number: '); int num1 = sc.nextInt(); // input is an Integer // read by nextInt() function System.out.println(' ' + num1); System.out.println('Enter the 2nd number: '); int num2 = sc.nextInt(); System.out.println(' ' + num2); System.out.println('Enter the 3rd number: '); int num3 = sc.nextInt(); System.out.println(' ' + num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; System.out.println('Sum of the 3 numbers is = ' + sum); } } /*This code is contributed by Rishab Dugar*/> Python # Python3 program to add three numbers # with the help of above designed # algorithm if __name__ == '__main__': # Variables to take the input of # the 3 numbers num1 = num2 = num3 = 0 # Variable to store the resultant sum sum = 0 # Take the 3 numbers as input num1 = int(input('Enter the 1st number: ')) num2 = int(input('Enter the 2nd number: ')) num3 = int(input('Enter the 3rd number: ')) # Calculate the sum using + operator # and store it in variable sum sum = num1 + num2 + num3 # Print the sum print('
Sum of the 3 numbers is:', sum)> C# // C# program to add the three numbers // with the help of above designed // algorithm using System; class GFG { static public void Main () { // Variable to store the resultant sum int sum = 0; // Variables to take the input of // the 3 numbers Console.Write('Enter the 1st number: '); int num1 = int.Parse(Console.ReadLine()); Console.WriteLine(' ' + num1); Console.Write('Enter the 2nd number: '); int num2 = int.Parse(Console.ReadLine()); Console.WriteLine(' ' + num2); Console.Write('Enter the 3rd number: '); int num3 = int.Parse(Console.ReadLine()); Console.WriteLine(' ' + num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; Console.WriteLine('Sum of the 3 numbers is = ' + sum); } } /*This code is contributed by Pushpesh Raj*/> Javascript // Javascript program to add three numbers // with the help of above designed // algorithm // Variables to take the input of // the 3 numbers let num1 = 0, num2 = 0, num3 = 0; // Variable to store the resultant sum let sum = 0; // Take the 3 numbers as input console.log('Enter the 1st number: '); num1 = parseInt(prompt()); console.log(' ' + num1 + ' '); console.log('Enter the 2nd number: '); num2=parseInt(prompt()); console.log(' ' + num2 + ' '); console.log('Enter the 3rd number: '); num3=parseInt(prompt()); console.log(' ' + num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; // Print the sum console.log(' Sum of the 3 numbers is: ' + sum); // This code is contributed by Aman Kumar> Ausgabe
Geben Sie die 1. Zahl ein: 0 Geben Sie die 2. Zahl ein: 0 Geben Sie die 3. Zahl ein: -1577141152 Die Summe der 3 Zahlen ist: -1577141152
Hier ist der Schritt-für-Schritt-Algorithmus des Codes:
- Deklarieren Sie die drei Variablen num1, num2 und num3, um die drei hinzuzufügenden Zahlen zu speichern.
- Deklarieren Sie eine Variable sum, um die Summe der drei Zahlen zu speichern.
- Verwenden Sie die cout-Anweisung, um den Benutzer zur Eingabe der ersten Zahl aufzufordern.
- Verwenden Sie die cin-Anweisung, um die erste Zahl zu lesen und sie in num1 zu speichern.
- Verwenden Sie die cout-Anweisung, um den Benutzer zur Eingabe der zweiten Zahl aufzufordern.
- Verwenden Sie die cin-Anweisung, um die zweite Zahl zu lesen und in num2 zu speichern.
- Verwenden Sie die cout-Anweisung, um den Benutzer zur Eingabe der dritten Zahl aufzufordern.
- Verwenden Sie die cin-Anweisung, um die dritte Zahl in num3 zu lesen und zu speichern.
- Berechnen Sie die Summe der drei Zahlen mit dem +-Operator und speichern Sie sie in der Summenvariablen.
- Verwenden Sie die cout-Anweisung, um die Summe der drei Zahlen auszugeben.
- Die Hauptfunktion gibt 0 zurück, was die erfolgreiche Ausführung des Programms anzeigt.
Zeitkomplexität: O(1)
Hilfsraum: O(1)
Ein Problem, viele Lösungen: Die Lösung eines Algorithmus kann mehr als eine sein oder nicht. Das bedeutet, dass es bei der Implementierung des Algorithmus mehr als eine Methode zur Implementierung geben kann. Im obigen Problem der Addition von drei Zahlen kann die Summe beispielsweise auf viele Arten berechnet werden:
- + Betreiber
- Bitweise Operatoren
- . . usw
Wie analysiert man einen Algorithmus?
Damit ein Standardalgorithmus gut ist, muss er effizient sein. Daher muss die Effizienz eines Algorithmus überprüft und aufrechterhalten werden. Es kann in zwei Phasen erfolgen:
1. Priori-Analyse:
Priori bedeutet vorher. Daher bedeutet Priori-Analyse, den Algorithmus vor seiner Implementierung zu überprüfen. Dabei wird der Algorithmus überprüft, wenn er in Form theoretischer Schritte geschrieben wird. Die Effizienz eines Algorithmus wird unter der Annahme gemessen, dass alle anderen Faktoren, beispielsweise die Prozessorgeschwindigkeit, konstant sind und keinen Einfluss auf die Implementierung haben. Dies wird normalerweise vom Algorithmusdesigner durchgeführt. Diese Analyse ist unabhängig von der Art der Hardware und der Sprache des Compilers. Es gibt die ungefähren Antworten für die Komplexität des Programms.
2. Posterior-Analyse:
Posterior bedeutet danach. Daher bedeutet Posterior-Analyse, den Algorithmus nach seiner Implementierung zu überprüfen. Dabei wird der Algorithmus überprüft, indem er in einer beliebigen Programmiersprache implementiert und ausgeführt wird. Diese Analyse hilft dabei, einen tatsächlichen und realen Analysebericht über die Korrektheit (für jede mögliche Eingabe/n, ob sie eine korrekte Ausgabe anzeigt/zurückgibt oder nicht), den benötigten Platz, die verbrauchte Zeit usw. zu erhalten. Das heißt, sie ist abhängig von der Sprache der Compiler und die Art der verwendeten Hardware.
Was ist die Komplexität eines Algorithmus und wie findet man sie?
Ein Algorithmus wird basierend auf der Menge an Raum und Zeit, die er verbraucht, als komplex definiert. Daher bezieht sich die Komplexität eines Algorithmus auf das Maß für die Zeit, die er benötigt, um auszuführen und die erwartete Ausgabe zu erhalten, sowie auf den Platz, den er zum Speichern aller Daten (Eingabe, temporäre Daten und Ausgabe) benötigt. Daher definieren diese beiden Faktoren die Effizienz eines Algorithmus.
Die zwei Faktoren der Algorithmuskomplexität sind:
- Zeitfaktor : Die Zeit wird gemessen, indem die Anzahl der Schlüsseloperationen gezählt wird, z. B. Vergleiche im Sortieralgorithmus.
- Raumfaktor : Der Speicherplatz wird gemessen, indem der maximale Speicherplatz gezählt wird, den der Algorithmus zum Ausführen/Ausführen benötigt.
Deshalb, die Die Komplexität eines Algorithmus kann in zwei Typen unterteilt werden :
1. Weltraumkomplexität : Die Platzkomplexität eines Algorithmus bezieht sich auf die Menge an Speicher, die der Algorithmus benötigt, um die Variablen zu speichern und das Ergebnis zu erhalten. Dies kann für Eingaben, temporäre Vorgänge oder Ausgaben sein.
Wie berechnet man die Raumkomplexität?
Die räumliche Komplexität eines Algorithmus wird durch die Bestimmung der folgenden 2 Komponenten berechnet:
- Fester Teil: Damit ist der Platz gemeint, der vom Algorithmus benötigt wird. Zum Beispiel Eingabevariablen, Ausgabevariablen, Programmgröße usw.
- Variabler Teil: Dies bezieht sich auf den Raum, der je nach Implementierung des Algorithmus unterschiedlich sein kann. Zum Beispiel temporäre Variablen, dynamische Speicherzuweisung, Rekursionsstapelplatz usw.
Daher Raumkomplexität S(P) eines beliebigen Algorithmus P ist S(P) = C + SP(I) , wobei C der feste Teil und S(I) der variable Teil des Algorithmus ist, der vom Instanzmerkmal I abhängt.
Beispiel: Betrachten Sie den folgenden Algorithmus für die lineare Suche
Schritt 1: STARTEN
Schritt 2: Holen Sie sich n Elemente des Arrays in arr und die zu suchende Zahl in x
Schritt 3: Beginnen Sie mit dem Element ganz links von arr[] und vergleichen Sie x nacheinander mit jedem Element von arr[]
Schritt 4: Wenn x mit einem Element übereinstimmt, wird True ausgegeben.
Schritt 5: Wenn x mit keinem der Elemente übereinstimmt, geben Sie „False“ aus.
Schritt 6: ENDE
Hier gibt es zwei Variablen, arr[] und x, wobei arr[] der variable Teil von n Elementen und x der feste Teil ist. Daher ist S(P) = 1+n. Die Raumkomplexität hängt also von n (Anzahl der Elemente) ab. Der Speicherplatz hängt nun von den Datentypen bestimmter Variablen und Konstantentypen ab und wird entsprechend multipliziert.
2. Zeitkomplexität : Die Zeitkomplexität eines Algorithmus bezieht sich auf die Zeit, die der Algorithmus benötigt, um auszuführen und das Ergebnis zu erhalten. Dies kann für normale Operationen, bedingte if-else-Anweisungen, Schleifenanweisungen usw. gelten.
Wie man rechnet , Zeitkomplexität?
Die zeitliche Komplexität eines Algorithmus wird auch durch die Bestimmung der folgenden 2 Komponenten berechnet:
- Konstanter Zeitteil: Jede Anweisung, die nur einmal ausgeführt wird, kommt in diesen Teil. Zum Beispiel Eingabe, Ausgabe, if-else, Schalter, arithmetische Operationen usw.
- Variabler Zeitteil: In diesen Teil fällt jede Anweisung, die mehr als einmal, beispielsweise n-mal, ausgeführt wird. Zum Beispiel Schleifen, Rekursion usw.
Daher ZeitkomplexitätT(P) eines beliebigen Algorithmus P ist T(P) = C + TP(I) , wobei C der konstante Zeitteil und TP(I) der variable Teil des Algorithmus ist, der von der Instanzeigenschaft I abhängt.
Beispiel: Im obigen Algorithmus der linearen Suche wird die Zeitkomplexität wie folgt berechnet:
Schritt 1: –Konstante Zeit
Schritt 2: – Variable Zeit (unter Verwendung von n Eingaben)
Schritt 3: – Variable Zeit (bis zur Länge des Arrays (n) oder dem Index des gefundenen Elements)
Schritt 4: –Konstante Zeit
Schritt 5: –Konstante Zeit
Schritt 6: –Konstante Zeit
Daher ist T(P) = 1 + n + n(1 + 1) + 1 = 2 + 3n, was als T(n) bezeichnet werden kann.
Wie drückt man einen Algorithmus aus?
- Natürliche Sprache:- Hier drücken wir den Algorithmus in der natürlichen englischen Sprache aus. Es ist zu schwer, den Algorithmus daraus zu verstehen.
- Flussdiagramm :- Hier drücken wir den Algorithmus aus, indem wir a machen grafische/bildliche Darstellung davon. Sie ist leichter zu verstehen als natürliche Sprache.
- Pseudocode :- Hier drücken wir den Algorithmus in Form von Anmerkungen und informativem Text in einfachem Englisch aus, der dem echten Code sehr ähnlich ist, aber da er keine Syntax wie andere Programmiersprachen hat, kann er nicht vom Computer kompiliert oder interpretiert werden . Dies ist die beste Möglichkeit, einen Algorithmus auszudrücken, da er sogar von Laien mit Grundkenntnissen auf Schulniveau verstanden werden kann.