Algoritm är en steg-för-steg-procedur för att lösa ett problem eller utföra en uppgift. I samband med datastrukturer och algoritmer är det en uppsättning väldefinierade instruktioner för att utföra en specifik beräkningsuppgift. Algoritmer är grundläggande för datavetenskap och spelar en mycket viktig roll för att utforma effektiva lösningar för olika problem. Att förstå algoritmer är viktigt för alla som är intresserade av att bemästra datastrukturer och algoritmer.
Innehållsförteckning
hur många 0 i en miljard
- Vad är en algoritm?
- Hur fungerar algoritmer?
- Vad gör en bra algoritm?
- Vad är behovet av algoritmer?
- Exempel på algoritmer
- Hur man skriver en algoritm?
- Lär dig grunderna i algoritmer
- Analys av algoritmer
- Typer av algoritmer
Vad är en algoritm?
En algoritm är en ändlig sekvens av väldefinierade instruktioner som kan användas för att lösa ett beräkningsproblem. Den tillhandahåller en steg-för-steg-procedur som omvandlar en ingång till en önskad utdata.
Hur fungerar algoritmer?
Algoritmer följer vanligtvis en logisk struktur:
- Inmatning: Algoritmen tar emot indata.
- Bearbetning: Algoritmen utför en serie operationer på indata.
- Produktion: Algoritmen producerar önskad utdata.
Egenskaper för en algoritm:
- Tydligt och otvetydigt: Algoritmen bör vara entydig. Vart och ett av dess steg bör vara tydligt i alla aspekter och måste leda till endast en mening.
- Väldefinierade ingångar: Om en algoritm säger att man ska ta indata, bör det vara väldefinierade ingångar. Det kan ta input eller inte.
- Väldefinierade utgångar: Algoritmen måste tydligt definiera vilken utdata som kommer att ge och den bör också vara väldefinierad. Den bör producera minst 1 utgång.
- Finitet: Algoritmen måste vara ändlig, dvs den ska avslutas efter en ändlig tid.
- Möjlig: Algoritmen måste vara enkel, generisk och praktisk, så att den kan köras med rimliga begränsningar och resurser.
- Språkoberoende: Algoritmen måste vara språkoberoende, d.v.s. det måste bara vara enkla instruktioner som kan implementeras på vilket språk som helst, och ändå blir resultatet detsamma, som förväntat.
Vad är behovet av algoritmer?
Algoritmer är avgörande för att lösa komplexa beräkningsproblem effektivt och effektivt. De ger ett systematiskt tillvägagångssätt för att:
kandidatnyckel
- Lösa problem: Algoritmer bryter ner problem i mindre, hanterbara steg.
- Optimera lösningar: Algoritmer hittar de bästa eller nästan optimala lösningarna på problem.
- Automatisera uppgifter: Algoritmer kan automatisera repetitiva eller komplexa uppgifter, vilket sparar tid och ansträngning.
Exempel på algoritmer
Nedan följer några exempel på algoritmer:
- Sorteringsalgoritmer: Slå samman sortering, Snabbsortering, Högsortering
- Sökalgoritmer: Linjär sökning, Binär sökning, Hashing
- Grafalgoritmer: Dijkstras algoritm, Prims algoritm, Floyd-Warshall algoritm
- Strängmatchningsalgoritmer: Knuth-Morris-Pratt-algoritm, Boyer-Moore-algoritm
Hur man skriver en algoritm?
Följ dessa steg för att skriva en algoritm:
- Definiera problemet: Ange tydligt vilket problem som ska lösas.
- Designa algoritmen: Välj ett lämpligt algoritmdesignparadigm och utveckla en steg-för-steg-procedur.
- Implementera algoritmen: Översätt algoritmen till ett programmeringsspråk.
- Testa och felsöka: Utför algoritmen med olika ingångar för att säkerställa dess korrekthet och effektivitet.
- Analysera algoritmen: Bestäm dess komplexitet i tid och rum och jämför den med alternativa algoritmer.
Lär dig grunderna i algoritmer
- Vad är Algoritm | Introduktion till algoritmer
- Definition, typer, komplexitet, exempel på algoritmer
- Algoritmer designtekniker
- Varför är analys av en algoritm viktig?
Analys av algoritmer
- Asymptotisk analys
- Värsta, genomsnittliga och bästa fall
- Asymptotiska notationer
- Nedre och övre gränsteori
- Introduktion till amorterad analys
- Vad betyder 'rymdkomplexitet'?
- Polynomtidsapproximationsschema
- Redovisningsmetod | Amorterad analys
- Potentiell metod i amorterad analys
Typer av algoritmer
Algoritmer kan vara olika, beroende på vad de gör och hur de är gjorda. Några vanliga typer är:
spara youtube video vlc
1. Sök- och sorteringsalgoritmer
- Introduktion till sökalgoritmer
- Introduktion till sorteringsalgoritm
- Stabila och instabila sorteringsalgoritmer
- Nedre gräns för jämförelsebaserade sorteringsalgoritmer
- Kan körtidskomplexiteten för en jämförelsebaserad sorteringsalgoritm vara mindre än N logN?
- Vilken sorteringsalgoritm gör det minsta antalet minnesskrivningar?
2. giriga algoritmer
- Introduktion till giriga algoritmer
- Aktivitetsvalsproblem
- Huffman-kodning
- Job Sequencing Problem
- Frågesport om giriga algoritmer
- Minsta antal plattformar som krävs för en järnvägs-/busstation
3. Dynamiska programmeringsalgoritmer
- Introduktion till dynamisk programmering
- Egenskap för överlappande delproblem
- Optimal underbyggnadsfastighet
- Längst ökande efterföljd
- Längsta vanliga efterföljd
- Min kostnadsväg
- Myntbyte
- Matrix Kedjemultiplikation
- 0-1 Knapsäcksproblem
- Längsta palindromisk efterföljd
- Palindromuppdelning
4. Algoritmer för mönstersökning
- Introduktion till mönstersökning
- Naiv mönstersökning
- KMP-algoritm
- Rabin-Karps algoritm
- Mönstersökning med ett försök med alla suffix
- Aho-Corasick-algoritm för mönstersökning
- Z-algoritm (algoritm för linjär tidsmönstersökning)
5. Backtracking-algoritm
- Introduktion till Backtracking
- Skriv ut alla permutationer av en given sträng
- Riddarens turnéproblem
- Råtta i en labyrint
- N Queen Problem
- Delmängd Summa
- m Färgproblem
- Hamiltons cykel
- Sudoku
6. Dela och erövra algoritm
- Introduktion till Divide and Conquer
- Slå samman sortering
- Skriv din egen pow(x, n) för att beräkna x*n
- Räkna inversioner
- Närmaste poängpar
- Strassens matrismultiplikation
7. Geometrisk algoritm
- Introduktion till geometriska algoritmer
- Närmaste poängpar | O(nlogn) Implementering
- Hur kontrollerar man om en given punkt ligger innanför eller utanför en polygon?
- Hur kontrollerar man om två givna linjesegment skär varandra?
- Med tanke på n linjesegment, hitta om några två segment skär varandra
- Hur man kontrollerar om fyra poäng bildar en kvadrat
- Konvexa skrov med Jarvis algoritm eller omslag
8. Matematiska algoritmer
- Introduktion till matematiska algoritmer
- Skriv en effektiv metod för att kontrollera om ett tal är multipel av 3
- Skriv ett program för att lägga till två tal i bas 14
- Program för Fibonacci-nummer
- Genomsnitt av en ström av siffror
- Multiplicera två heltal utan att använda multiplikation, division och bitvisa operatorer, och inga loopar
- Babylonisk metod för kvadratrot
- Sil av Eratosthenes
- Pascals triangel
- Med ett nummer, hitta nästa minsta palindrom
- Program för att lägga till två polynom
- Multiplicera två polynom
- Räkna efterföljande nollor i faktorial av ett tal
9. Bitvisa algoritmer
- Introduktion till Bitwise Algorithms
- Little and Big Endian
- Upptäck motsatta tecken
- Byt bitar
- Stäng av biten längst till höger
- Rotera bitar
- Nästa högre antal med samma antal inställda bitar
- Byt två nibbles i en byte
10. Grafalgoritmer
- Introduktion till randomiserade algoritmer
- Linjäritet av förväntan
- Förväntat antal försök fram till framgång
- Randomiserade algoritmer | Set 0 (matematisk bakgrund)
- Randomiserade algoritmer | Set 1 (Introduktion och analys)
- Randomiserade algoritmer | Set 2 (Klassificering och applikationer)
- Randomiserade algoritmer | Uppsättning 3 (1/2 ungefärlig median)
- Reservoarprovtagning
12. Gren- och bundna algoritmer
- Gren och bunden | Set 1 (Introduktion med 0/1 ryggsäck)
- Gren och bunden | Set 2 (Implementering av 0/1 Knapsack)
- Gren och bunden | Set 3 (8 pusselproblem)
- Gren och bunden | Uppsättning 4 (jobbtilldelningsproblem)
- Gren och bunden | Set 5 (N Queen Problem)
- Gren och bunden | Set 6 (problem med resande säljare)
Frågesporter:
- Analys av algoritmer
- Sortering
- Söndra och erövra
- giriga algoritmer
- Dynamisk programmering
- Backtracking
- NP komplett
- Sökande
- Rekursion
- Bitalgoritmer