En algoritme er en veldefineret sekventiel beregningsteknik, der accepterer en værdi eller en samling af værdier som input og producerer det eller de output, der er nødvendige for at løse et problem.
Eller vi kan sige, at en algoritme siges at være nøjagtig, hvis og kun hvis den stopper med det korrekte output for hver inputforekomst.
BEHOV FOR ALGORITIMERNE:
Algoritmer bruges til at løse problemer eller automatisere opgaver på en systematisk og effektiv måde. De er et sæt instruktioner eller regler, der guider computeren eller softwaren i at udføre en bestemt opgave eller løse et problem.
hvad er 10 af 60
Der er flere grunde til, at vi bruger algoritmer:
- Effektivitet: Algoritmer kan udføre opgaver hurtigt og præcist, hvilket gør dem til et væsentligt værktøj til opgaver, der kræver mange beregninger eller databehandling. Konsistens: Algoritmer kan gentages og giver ensartede resultater, hver gang de udføres. Dette er vigtigt, når der er tale om store mængder data eller komplekse processer. Skalerbarhed: Algoritmer kan skaleres op til at håndtere store datasæt eller komplekse problemer, hvilket gør dem nyttige til applikationer, der kræver behandling af store mængder data. Automatisering: Algoritmer kan automatisere gentagne opgaver, hvilket reducerer behovet for menneskelig indgriben og frigør tid til andre opgaver. Standardisering: Algoritmer kan standardiseres og deles mellem forskellige teams eller organisationer, hvilket gør det lettere for folk at samarbejde og dele viden.
Overordnet set er algoritmer et væsentligt værktøj til at løse problemer inden for en række forskellige områder, herunder datalogi, teknik, dataanalyse, økonomi og mange andre.
Eksempel:
Overvej en boks, hvor ingen kan se, hvad der sker indeni, siger vi en sort boks.
Vi giver input til boksen, og det giver os det output, vi har brug for, men proceduren, som vi måske skal kende bag konverteringen af input til ønsket output, er en ALGORITMME.
En algoritme er uafhængig af det anvendte sprog. Det fortæller programmøren den logik, der blev brugt til at løse problemet. Så det er en logisk trin-for-trin procedure, der fungerer som en plan for programmører.
Eksempler fra det virkelige liv, der definerer brugen af algoritmer:
- Overvej et ur. Vi ved, at uret tikker, men hvordan indstiller producenten disse møtrikker og bolte, så det bliver ved med at bevæge sig hvert 60. sekund, min. viseren skal bevæge sig, og hver 60. min., skal timeviseren bevæge sig? Så for at løse dette problem skal der være en algoritme bag.
- Har du set nogen lave din yndlingsmad til dig? Er opskriften nødvendig for det? Ja, det er nødvendigt, da en opskrift er en sekventiel procedure, der forvandler en rå kartoffel til en kølig kartoffel. Dette er, hvad en algoritme er: at følge en procedure for at få det ønskede output. Er rækkefølgen nødvendig at følge? Ja, rækkefølgen er det vigtigste, der skal følges for at få det, vi ønsker.
Typer af algoritmer:
- Sorteringsalgoritmer: Boblesortering, indsættelsessortering og mange flere. Disse algoritmer bruges til at sortere dataene i et bestemt format.
- Søgealgoritmer: Lineær søgning, binær søgning osv. Disse algoritmer bruges til at finde en værdi eller post, som brugeren efterspørger.
- Grafiske algoritmer : Det bruges til at finde løsninger på problemer som at finde den korteste vej mellem byer og virkelige problemer som rejsende sælgerproblemer.
Sorteringsalgoritmer er algoritmer, der tager en samling af elementer og omarrangerer dem i en specificeret rækkefølge (f.eks. stigende eller faldende). Der findes mange forskellige sorteringsalgoritmer, hver med sine egne styrker og svagheder. Nogle af de mest almindeligt anvendte sorteringsalgoritmer inkluderer:
Boble sortering: En simpel sorteringsalgoritme, der gentagne gange går gennem listen, sammenligner tilstødende elementer og udskifter dem, hvis de er i den forkerte rækkefølge.
Indsættelsessortering: En simpel sorteringsalgoritme, der opbygger det endelige sorterede array ét element ad gangen, ved at sammenligne hver ny vare med de elementer, der allerede er sorteret og indsætte den i den korrekte position.
Udvælgelsessortering: En simpel sorteringsalgoritme, der gentagne gange vælger minimumselementet fra den usorterede del af arrayet og flytter det til slutningen af den sorterede del.
Flet sortering: En opdel-og-hersk sorteringsalgoritme, der fungerer ved at opdele den usorterede liste i n underlister, sortere hver underliste og derefter slå dem sammen til en enkelt sorteret liste.
Hurtig sortering: En opdel-og-hersk sorteringsalgoritme, der fungerer ved at vælge et pivotelement fra arrayet og opdele de andre elementer i to underarrays, alt efter om de er mindre end eller større end pivoten. Underarrays sorteres derefter rekursivt.
Hver af disse algoritmer har forskellige tids- og rumkompleksiteter, hvilket gør nogle mere velegnede til bestemte brugssager end andre.
Søgealgoritmer er algoritmer, der søger efter et bestemt element eller en bestemt værdi i en datastruktur (såsom en matrix eller en sammenkædet liste). Nogle af de mest almindeligt anvendte søgealgoritmer inkluderer:
Lineær søgning: En simpel søgealgoritme, der itererer gennem hvert element i en liste, indtil den finder et match.
Binær søgning: En søgealgoritme, der virker ved at dele en sorteret liste i to gentagne gange, indtil det ønskede element er fundet, eller det kan fastslås, at elementet ikke er til stede.
java liste metoder
Hop søgning: En søgealgoritme, der fungerer ved at springe frem med faste trin i listen, indtil en passende kandidat er fundet, og derefter udføre en lineær søgning i de omkringliggende elementer.
Interpolationssøgning : En søgealgoritme, der fungerer ved at bruge information om rækken af værdier på listen til at estimere placeringen af det ønskede element og derefter verificere, at det faktisk er til stede.
Hash-tabelsøgning: En søgealgoritme, der bruger en hash-funktion til at kortlægge elementer til indekser i et array og derefter udfører konstant-tidsopslag i arrayet for at finde det ønskede element.
Hver af disse algoritmer har forskellige tids- og rumkompleksiteter, hvilket gør nogle mere velegnede til visse anvendelsestilfælde end andre. Valget af hvilken algoritme der skal bruges afhænger af de specifikke krav til problemet, såsom størrelsen af datastrukturen, fordelingen af værdier og den ønskede tidskompleksitet.
Grafalgoritmer er et sæt algoritmer, der bruges til at behandle, analysere og forstå grafdatastrukturer. Grafer er matematiske strukturer, der bruges til at modellere relationer mellem objekter, hvor objekterne er repræsenteret som hjørner (eller noder), og relationerne mellem dem er repræsenteret som kanter. Grafalgoritmer bruges i en række forskellige applikationer såsom netværksanalyse, sociale netværksanalyse, anbefalingssystemer og i mange andre områder, hvor det er vigtigt at forstå relationerne mellem objekter. Nogle af de almindelige grafalgoritmer inkluderer:
Shortest Path algoritmer (f.eks. Dijkstra's, Bellman-Ford, A*)
Minimum Spanning Tree-algoritmer (f.eks. Kruskal, Prim)
Maximum Flow algoritmer (f.eks. Ford-Fulkerson, Edmonds-Karp)
Netværksflow-algoritmer (f.eks. Bipartite Matching)
Forbindelsesalgoritmer (f.eks. dybde-først-søgning, bredde-først-søgning)
Hvorfor bruger vi algoritmer?
Overvej to børn, Aman og Rohan, der løser Rubiks terning. Aman ved, hvordan man løser det i et bestemt antal trin. På den anden side ved Rohan, at han vil gøre det, men er ikke klar over proceduren. Aman løser terningen inden for 2 minutter, hvorimod Rohan stadig sidder fast, og ved slutningen af dagen lykkedes det ham på en eller anden måde at løse det (kan have snydt, da proceduren er nødvendig).
Så den tid, der kræves til at løse med en procedure/algoritme, er meget mere effektiv end uden nogen procedure. Derfor er behovet for en algoritme et must.
Med hensyn til at designe en løsning på et it-problem er computere hurtige, men ikke uendeligt hurtige. Hukommelsen kan være billig, men ikke gratis. Så regnetid er derfor en afgrænset ressource, og det samme er rummet i hukommelsen. Så vi bør bruge disse ressourcer klogt, og algoritmer, der er effektive med hensyn til tid og rum, vil hjælpe dig med at gøre det.
Oprettelse af en algoritme:
Da algoritmen er sproguafhængig, skriver vi trinene for at demonstrere logikken bag den løsning, der skal bruges til at løse et problem. Men før du skriver en algoritme, skal du huske på følgende punkter:
- Algoritmen skal være klar og utvetydig.
- Der skal være 0 eller flere veldefinerede input i en algoritme.
- En algoritme skal producere et eller flere veldefinerede output, der svarer til det ønskede output. Efter et bestemt antal trin skal algoritmerne standse.
- Algoritmer skal stoppe eller slutte efter et begrænset antal trin.
- I en algoritme skal der leveres trin-for-trin instruktioner, og de skal være uafhængige af enhver computerkode.
Eksempel: algoritme til at gange 2 tal og udskrive resultatet:
Trin 1: Start
Trin 2: Få viden om input. Her skal vi bruge 3 variable; a og b vil være brugerens input, og c vil holde resultatet.
Trin 3: Erklære a, b, c variabler.
Trin 4: Tag input til a og b variable fra brugeren.
Trin 5: Kend problemet og find løsningen ved hjælp af operatører, datastrukturer og logikVi skal gange a og b variable, så vi bruger * operator og tildeler resultatet til c.
Det vil sige c <- a * bTrin 6: Tjek hvordan man giver output, her skal vi udskrive output. Så skriv print c
Trin 7: Ende
Eksempel 1: Skriv en algoritme til at finde maksimum af alle de elementer, der er til stede i arrayet.
Følg algoritmetilgangen som nedenfor:
Trin 1: Start programmet
Trin 2: Deklarer en variabel max med værdien af det første element i arrayet.
Trin 3: Sammenlign max med andre elementer ved hjælp af loop.
Trin 4: Hvis maxTrin 5: Hvis der ikke er noget element tilbage, returner eller print max ellers gå til trin 3.
Trin 6: Slut på løsning
Eksempel 2: Skriv en algoritme til at finde gennemsnittet af 3 emner.
Følg algoritmetilgangen som nedenfor:
støbt sql
Trin 1: Start programmet
Trin 2: Erklær og læs 3 emne, lad os sige S1, S2, S3
Trin 3: Beregn summen af alle de 3 emneværdier og gem resultatet i Sum-variabelen (Sum = S1+S2+S3)
Trin 4: Divider Sum med 3 og tildel den til Gennemsnitsvariabel. (Gennemsnit = Sum/3)
Trin 5: Udskriv værdien af Gennemsnit af 3 fag
Trin 6: Slut på løsning
Kend til algoritmekompleksitet:
Kompleksitet i algoritmer refererer til mængden af ressourcer (såsom tid eller hukommelse), der kræves for at løse et problem eller udføre en opgave. Det mest almindelige mål for kompleksitet er tidskompleksitet, som refererer til den tid, det tager en algoritme at producere et resultat som funktion af størrelsen af input. Hukommelseskompleksitet refererer til mængden af hukommelse, der bruges af en algoritme. Algoritmedesignere stræber efter at udvikle algoritmer med den lavest mulige tids- og hukommelseskompleksitet, da dette gør dem mere effektive og skalerbare.
Kompleksiteten af en algoritme er en funktion, der beskriver effektiviteten af algoritmen i forhold til mængden af data, algoritmen skal behandle.
Normalt er der naturlige enheder for denne funktions domæne og rækkevidde.
En algoritme analyseres ved hjælp af tidskompleksitet og rumkompleksitet. At skrive en effektiv algoritme hjælper med at forbruge den minimale tid til at behandle logikken. For algoritme A bedømmes den på basis af to parametre for et input af størrelse n :
- Tidskompleksitet: Tid det tager algoritmen at løse problemet. Det måles ved at beregne iterationen af loops, antallet af sammenligninger osv.
- Tidskompleksitet er en funktion, der beskriver den tid, en algoritme tager i forhold til mængden af input til algoritmen.
- Tid kan betyde antallet af udførte hukommelsesadgange, antallet af sammenligninger mellem heltal, antallet af gange, en indre sløjfe udføres, eller en anden naturlig enhed relateret til mængden af realtid, algoritmen vil tage.
- Rumkompleksitet: Plads taget af algoritmen for at løse problemet. Det inkluderer plads, der bruges af nødvendige inputvariabler, og enhver ekstra plads (eksklusive pladsen optaget af input), der bruges af algoritmen. For eksempel, hvis vi bruger en hash-tabel (en slags datastruktur), har vi brug for en matrix til at gemme værdier, så
- dette er en ekstra plads optaget, og vil derfor tælle med i algoritmens pladskompleksitet. Denne ekstra plads er kendt som Auxiliary Space.
- Rumkompleksitet er en funktion, der beskriver mængden af hukommelse(plads) en algoritme tager i forhold til mængden af input til algoritmen.
- Rumkompleksitet ignoreres nogle gange, fordi det anvendte rum er minimalt og/eller indlysende, men nogle gange bliver det et problem som tid.
. Operationernes tidskompleksitet:
- Valget af datastruktur bør baseres på tidskompleksiteten af de operationer, der skal udføres.
- Tidskompleksitet er defineret ud fra, hvor mange gange det tager at køre en given algoritme, baseret på længden af input.
- Tidskompleksiteten af en algoritme er den tid, det tager for hver sætning at fuldføre. Det er meget afhængig af størrelsen af de behandlede data.
- Hvis du for eksempel skal udføre søgninger ofte, bør du bruge et binært søgetræ.
.Rumkompleksiteten af operationerne:
- Valget af datastruktur bør baseres på pladskompleksiteten af de operationer, der skal udføres.
- Mængden af hukommelse, der bruges af et program til at udføre det, repræsenteres af dets pladskompleksitet.
- Fordi et program kræver hukommelse til at gemme inputdata og tidsmæssige værdier, mens det kører , er pladskompleksiteten ekstra og inputplads.
- Hvis du for eksempel skal gemme en masse data, bør du bruge et array.
sager i kompleksitet:
Der er to almindeligt studerede tilfælde af kompleksitet i algoritmer:
1. Bedste tilfælde kompleksitet: Det bedste scenario for en algoritme er det scenarie, hvor algoritmen udfører den mindste mængde arbejde (f.eks. tager den korteste tid, bruger den mindste mængde hukommelse osv.).
2. Worst case kompleksitet: Det værst tænkelige scenarie for en algoritme er det scenarie, hvor algoritmen udfører den maksimale mængde arbejde (f.eks. tager længst tid, bruger mest hukommelse osv.).
Ved at analysere kompleksiteten af en algoritme er det ofte mere informativt at studere worst-case scenariet, da dette giver en garanteret øvre grænse for algoritmens ydeevne. Best-case scenario-analyse udføres nogle gange, men er generelt mindre vigtigt, da det giver en nedre grænse, som ofte er triviel at opnå.
Fordele ved algoritmer
- Let at forstå: Da det er en trinvis repræsentation af en løsning på et givent problem, er det let at forstå.
- Sproguafhængig: Det er ikke afhængigt af noget programmeringssprog, så det kan let forstås af enhver.
- Fejlfinding/fejlfinding: Hvert trin er uafhængigt / i et flow, så det bliver nemt at opdage og rette fejlen.
- Underproblemer: Det er skrevet i et flow, så nu kan programmøren opdele opgaverne, hvilket gør dem nemmere at kode.
Ulemper ved algoritmer
- At skabe effektive algoritmer er tidskrævende og kræver gode logiske færdigheder.
- Ulækkert at vise forgreninger og looping i algoritmer.