Was ist ein Algorithmus?
Hierbei handelt es sich um eine Abfolge von Regeln / Anweisungen, die beschrieben werden, bevor ein Lösungsansatz für ein bestimmtes Problem gefunden wird, der die Lösung des Problems garantiert. Nehmen Sie zum Beispiel einen Eisenbahn-Torpunkt.
Ein Algorithmus sollte:
- Gut definiert und geordnet sein - Die Anweisungen in einem Algorithmus sollten verständlich und gut definiert sein.
- Eindeutige Operationen haben, dh jeder der Schritte eines Algorithmus sollte so einfach sein, dass keine weitere Vereinfachung erforderlich ist
- Haben Sie eine effektiv berechenbare Operation.
Bildquelle : d262ilb51hltx0.cloudfront.net/
Algorithmus verstehen
Bildquelle: goo.gl/images/u76bFe
Es gibt einen Sensor, der die Ankunft eines Zuges erfasst und dessen Ausgabe 2 Ergebnisse haben könnte
- Zug kommt an
- Der Zug kommt nicht an
Das Ergebnis des ersten Ergebnisses wird an eine Aktion übergeben, in der empfohlen wird, die Tore zu schließen, während das Ergebnis des zweiten Ergebnisses erneut getestet wird, indem es an die ursprüngliche Anweisung gesendet wird. Darüber hinaus wird das Ergebnis der Aktion, das das Ergebnis der ersten Bedingung war, einer Prüfung unterzogen, um zu überprüfen, ob der Zug vollständig abgefahren ist. Wenn die Antwort ja ist, werden die Tore geöffnet, wenn sie negativ sind, bleiben die Tore geschlossen. Wir werden mehr darüber diskutieren und mit den folgenden Themen arbeiten (Die Teilmengen / Bausteine und die Arbeit eines Algorithmus)
Wie erleichtert Algorithmus die Arbeit?
Wie wir wissen, ist dies ein Plan zur Lösung eines Problems. Nun, wenn wir keinen Plan haben, würde unser Ansatz zur Lösung eines komplexen Problems möglicherweise im ersten Versuch scheitern, und selbst wenn er das Problem löst, ist die Wahrscheinlichkeit sehr gering, dass er eine optimale Lösung für dieses Problem darstellt.
Wenn wir dagegen einen Algorithmus erstellen, bevor wir ein Problem lösen, nehmen wir an, wir erstellen einige wenige Algorithmen und sortieren sie auf der Grundlage der optimalen Lösung, die sie bieten, um das gegebene Problem zu lösen. Dies ist der Grund, warum überall, bevor ein Problem gelöst wird, zuerst ein Algorithmus erstellt wird.
Top-Unternehmen für Algorithmenentwicklung
Um ein großartiges Produkt zu erstellen, ist ein wirklich gutes Design erforderlich, obwohl wir keinen Algorithmus für zwei verschiedene Probleme vergleichen können. Wir können nur die Namen der Unternehmen auflisten, die im 21. Jahrhundert einige hervorragende Produkte für diese Welt geliefert haben:
- DeepMind
- Baidu
- Nvidia
- CloudWalk
- SenseTime
- Darktrace
- Cambrian
- IBM
- OpenAI
- ByteDance
- CrowdStrike
- Zebra Medical Vision
- Babylon
- Intel
- Flatiron Gesundheit
- Bestätigen
- Emporkömmling
- Element AI
- CloudMinds
- DataRobot
- Anki
- Zymergen
- UBTECH
Quelle: algorithmxlab.com/
Die Subsets / Building Blocks und die Arbeit eines Algorithmus
In all den Jahren hat sich gezeigt, dass ein Algorithmus aus nur drei Bausteinen entworfen werden kann:
- Reihenfolge
- Auswahl
- Wiederholung
Bildquelle : https://goo.gl/
Eine Sequenz ist eine Reihe von Anweisungen, die befolgt werden müssen, um ein Problem zu lösen, und die Anweisungen sollten in der angegebenen Reihenfolge ausgeführt werden.
Beispiele
1. Addition von zwei Zahlen
Schritt 1: Starten
Schritt 2: Holen Sie sich zwei Zahlen als Eingabe und speichern Sie sie in einer Variablen als a und b
Schritt 3: Addiere die Zahl a & b und speichere sie in der Variablen c
Schritt 4: Drucken c
Schritt 5: Stopp.
Eine Auswahl ist ein Programm, mit dem wir die Ausgabe aus verschiedenen Aktionen auswählen können. Wie wir bereits im Beispiel des Eisenbahntors gesehen haben, hatten wir eine Bedingungsbox, in der überprüft wurde, ob der Zug ankommt.
2. Finden Sie die größte unter 2 Zahlen
Schritt 1: Starten
Schritt 2: Holen Sie sich zwei Zahlen als Eingabe und speichern Sie sie in einer Variablen als a und b
Schritt 3: Wenn a größer als b ist, dann
Schritt 4: Drucken Sie a ist groß
Schritt 5: sonst
Schritt 6: Druck b ist groß
Schritt 7: Stopp
Wiederholung oder Iteration oder Schleife sind die kleineren Programme, die mehrmals ausgeführt werden, bis die Bedingung erfüllt ist.
3. Wenn wir die Fakultät einer Zahl berechnen möchten
Schritt 1 : Starten
Schritt 2 : Deklarieren Sie die Variablen n, factorial und i
Schritt 3 : Initialisieren Sie die Variablen ie factorialß1 und iß1
Schritt 4: Lesen Sie die Werte von n
Schritt 5: Wiederholen Sie die Schritte bis zur nächsten Iteration
Fakultät <- Fakultät * i
i <- i + 1
Schritt 6: Fakultät anzeigen
Schritt 7: Stoppen Sie
Was kann man mit einem Algorithmus machen?
Es ist eine Funktion oder eine Reihe von Funktionen, die ein Problem lösen. Wir können einen Algorithmus verwenden, um das einfachste Problem sowie einige der schwierigsten Probleme der Welt zu lösen. Mit Hilfe der „Zeitkomplexität“ entscheiden wir, dass es eine optimale ist. In einfachen Worten ist Zeitkomplexität ein Weg, um die Laufzeit eines gegebenen Algorithmus zu beschreiben. Es gibt eine minimale Laufzeit (kleines 'O' genannt), eine durchschnittliche Laufzeit und eine Laufzeit im ungünstigsten Fall (O (N)) (auch als großes 'O' bezeichnet). Informatiker und Softwareingenieure denken gerne über Algorithmen nach, weil sie daran interessiert sind, Best-Practice-Sammlungen zu bewerten und aufzubauen, damit sie nicht bei jedem Auftreten einer ähnlichen Problemklasse von vorne anfangen müssen. Im Folgenden finden Sie ein Beispiel für unterschiedliche zeitliche Komplexitäten, die bei der Lösung eines bestimmten Problems auftreten können. Das bedeutet auch, dass es mehrere Lösungen für ein einzelnes Problem geben kann. Wir müssen jedoch die optimalste auswählen, indem wir die zeitliche Komplexität der Algorithmen berechnen. In Interviews werden Sie aufgefordert, ein Problem zu lösen und es zu optimieren, dh die Laufzeit Ihres Algorithmus zu verkürzen. Beispielsweise haben Sie möglicherweise Code mit 2 for-Schleifen (Iteration) geschrieben, aber es ist möglich, dass der Job nur mit einer einzigen for-Schleife (Iteration) ausgeführt werden kann, aber Sie waren dieser Lösung nicht gewachsen noch und du musst mehr herausfinden!
Bildquelle: https://goo.gl/
Vorteile des Algorithmus
- Es ist eine schrittweise Darstellung einer Lösung für ein bestimmtes Problem, die das Verständnis erleichtert.
- Es wird ein bestimmtes Verfahren angewendet.
- Es ist unabhängig von jeder Programmiersprache und daher auch ohne Programmierkenntnisse für jeden leicht verständlich.
- Jeder Schritt hat seine eigene logische Abfolge, daher ist das Debuggen einfach.
- Durch die Verwendung des Algorithmus wird das Problem in kleinere Teile oder Schritte zerlegt, so dass es für einen Programmierer einfacher ist, es in ein tatsächliches Programm umzuwandeln
Benötigte Fähigkeiten
Um einen robusten und bestmöglichen Algorithmus für die Zeitkomplexität zu entwerfen, muss man logisch denken, gut in Mathematik sein und mindestens eine objektorientierte Programmiersprache beherrschen. Kenntnisse der Datenstruktur sind ebenfalls erforderlich.
- Computer - Erfahren Sie mehr über Arrays, verknüpfte Listen, Binärbäume, Hash-Tabellen, Diagramme, Stapel, Warteschlangen, Heaps und andere grundlegende Datenstrukturen.
- Mathematik - Erfahren Sie mehr über Mengenlehre, endliche Zustandsmaschinen, reguläre Ausdrücke, Matrixmultiplikation, bitweise Operationen, das Lösen linearer Gleichungen und andere wichtige Konzepte wie Permutationen, Kombinationen und das Pigeonhole-Prinzip.
- Big-O & Runtime - Erfahren Sie, was Big-O ist und wie Sie die Laufzeiten von Algorithmen analysieren.
Warum sollten wir verwenden und warum brauchen wir einen Algorithmus?
Man sollte den Algorithmus verwenden, da er unsere Arbeit erleichtert und uns die optimalste Lösung bietet. Wenn wir keinen Algorithmus anwenden, bevor wir ein komplexes Problem lösen, besteht eine hohe Wahrscheinlichkeit, dass wir hinsichtlich einer Lösung richtungslos werden. Mit dem Algorithmus sparen wir Zeit beim Lösen von Problemen und stellen sicher, dass die Optimalität des Lösungsalgorithmus, wie bereits erwähnt, von jeder Programmiersprache unabhängig ist, sodass jeder einen Algorithmus entwerfen kann, aber um einen wirklich guten Algorithmus zu entwerfen, sollte man es tun Seien Sie gut in Logik und Mathematik. Es dient als Prototyp einer Lösung.
Stellen Sie sich zum Beispiel vor, wir hätten zwei Rubik's Cubes vor uns. Einer von ihnen darf Algorithmen verwenden (wie etwa wie oft oder in welche Richtung ein Gesicht gedreht werden soll) und der andere muss seinen eigenen Weg finden. Welcher Weg wird schneller sein? Sicher wird es der erste sein.
Nehmen wir ein interessantes Beispiel:
Nehmen wir an, wir haben eine Reihe von Elementen und möchten sie in aufsteigender Reihenfolge sortieren. Nun gibt es einen anderen algorithmischen Ansatz. Wir werden uns auf die zeitliche Komplexität von 2 von ihnen konzentrieren: Einfügungssortierung und Zusammenführungssortierung
Einfügesortierung: Die Einfügesortierung ist eine einfache Sortierung.
(Zeitkomplexität ist O (N 2).)
Zusammenführen sortieren: Beim Zusammenführen sortieren wir die Elemente mit der Methode Teilen und Erobern.
Die Zeitkomplexität ist O (N log N).
Dies könnte die Auswirkung sein, die sich ergeben würde, wenn Sie eine nicht befolgen und keine Analyse durchführen.
Algorithmus-Bereich
Wenn Sie den Algorithmus lernen und beherrschen, kennen Sie die Kunst des „Problemlösens“. Mit guter Praxis und kontinuierlichem Lernen sollten Sie in der Lage sein, komplexe Probleme zu lösen. Es ist die Grundlage für das Entwerfen einer Software oder eines Codes, da die Laufzeit des Codes einer der wichtigsten Faktoren für die Bestimmung der Ausführung einer bestimmten Aufgabe ist. Experten wie Google und Facebook beurteilen Ihre Fähigkeiten zur Problemlösung. In Interviews beziehen sich die meisten Fragen auf das Algorithmus-Design und die Problemlösung. Sie werden aufgefordert, einen Algorithmus zu entwerfen und ihn auf die bestmögliche Komplexitätszeit zu optimieren.
Einige Punkte:
- Dies wird Ihre Fähigkeiten zur Problemlösung verbessern und Sie dazu bringen, bei Interviews oder Online-Prüfungen besser mithalten zu können
- Sie werden Ihre Zeit bei der Lösung eines Problems verkürzen.
- Fast alle Technologiegiganten stellen Kandidaten aufgrund ihrer besseren Fähigkeiten zur Problemlösung ein
- Man kann das Beste aus einer Programmiersprache machen, indem man lernt, wie man einen Algorithmus konstruiert und entwirft
Wer ist das richtige Publikum für das Erlernen von Algorithmus-Technologien?
Aus Sicht der Informatik sollte jeder, der wenig oder mehr programmiert, Algorithmen lernen. Wenn Sie Code schreiben, der Ihr Problem nicht löst, oder wenn das Problem dadurch behoben wird, die Ressourcen jedoch ineffizient genutzt werden (z. B. dauert die Ausführung lange, oder es wird zu viel Computerspeicher verwendet), ist Ihr Code nicht optimal . Die Unternehmen möchten jedoch, dass ihre Software oder Produkte so schnell wie möglich reagieren oder ausgeführt werden.
Wer etwas entwickelt, sollte lernen, wie man eine Analyse über einen Algorithmus durchführt, um ein optimales Funktionieren des Endprodukts sicherzustellen.
Wie hilft Ihnen der Algorithmus beim Karrierewachstum?
Das Entwerfen und Analysieren eines Algorithmus ist keine Rolle (spezifisch), sondern gehört zu Ihrem Job, und dieser Teil spielt eine wichtige Rolle bei der Codeentwicklung. Wenn Sie einen guten Algorithmus entwerfen, werden Sie gute Codes mit einer optimalen Lösung schreiben und schließlich Ihr Endprodukt, das an die Kunden geliefert wird, übertreffen. Wenn Sie also Software entwerfen und / oder entwickeln, sind Kenntnisse und Erfahrungen mit Datenstrukturen und Algorithmen unerlässlich. Angenommen, Sie arbeiten an einem Software-Entwicklungsprodukt, dessen Reaktion gründlich getestet werden sollte (Sie möchten natürlich die Laufzeit des Prozesses überprüfen, bevor Sie den Code an das Software-Test-Team übergeben). Dies ist jedoch nicht möglich Vermutung fast genau im Voraus, aber Sie müssen die Analyse eines Algorithmus verwenden, um die zeitliche Komplexität zu berechnen.
Fazit
Als wir eine einführende Beschreibung der Algorithmen und ihrer verschiedenen Aspekte gesehen haben, haben wir gesehen, dass es verschiedene Ansätze zur Lösung eines bestimmten Problems geben kann. Big-O und Zeitkomplexität sind die Parameter, die uns bei der Auswahl der optimalen Lösung helfen. Wenn Sie eine gute Anzahl von Algorithmen kennenlernen, werden Sie in der Analyse von Algorithmen grundlegend gestärkt und sollten in der Lage sein, Algorithmen problemlos zu entwerfen und zu analysieren.
Empfohlene Artikel
Dies war ein Leitfaden für Was ist ein Algorithmus. Hier diskutierten wir die Arbeitsweise von Algorithmen mit Beispielen und ihren verschiedenen Aspekten. Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren -
- Was ist Tableau Server?
- Leitfaden zur Big Data-Analyse
- Was ist SQL Developer?
- Was ist Informatica?