En algoritme er en veldefinert sekvensiell beregningsteknikk som aksepterer en verdi eller en samling av verdier som input og produserer utdataene som trengs for å løse et problem.
Eller vi kan si at en algoritme sies å være nøyaktig hvis og bare hvis den stopper med riktig utgang for hver inngangsforekomst.
BEHOV FOR ALGORITMENE:
Algoritmer brukes til å løse problemer eller automatisere oppgaver på en systematisk og effektiv måte. De er et sett med instruksjoner eller regler som veileder datamaskinen eller programvaren i å utføre en bestemt oppgave eller løse et problem.
byer i australia
Det er flere grunner til at vi bruker algoritmer:
- Effektivitet: Algoritmer kan utføre oppgaver raskt og nøyaktig, noe som gjør dem til et viktig verktøy for oppgaver som krever mye beregninger eller databehandling. Konsistens: Algoritmer er repeterbare og gir konsistente resultater hver gang de utføres. Dette er viktig når man arbeider med store datamengder eller komplekse prosesser. Skalerbarhet: Algoritmer kan skaleres opp for å håndtere store datasett eller komplekse problemer, noe som gjør dem nyttige for applikasjoner som krever behandling av store datamengder. Automatisering: Algoritmer kan automatisere repeterende oppgaver, redusere behovet for menneskelig intervensjon og frigjøre tid til andre oppgaver. Standardisering: Algoritmer kan standardiseres og deles mellom ulike team eller organisasjoner, noe som gjør det lettere for folk å samarbeide og dele kunnskap.
Totalt sett er algoritmer et viktig verktøy for å løse problemer på en rekke felt, inkludert informatikk, ingeniørfag, dataanalyse, finans og mange andre.
Eksempel:
Tenk på en boks der ingen kan se hva som skjer inni, vi sier en svart boks.
Vi gir innspill til boksen og den gir oss utdataene vi trenger, men prosedyren som vi kanskje trenger å vite bak konverteringen av input til ønsket utgang er en ALGORITME.
En algoritme er uavhengig av språket som brukes. Den forteller programmereren logikken som ble brukt for å løse problemet. Så det er en logisk steg-for-steg prosedyre som fungerer som en blåkopi for programmerere.
Eksempler fra det virkelige liv som definerer bruken av algoritmer:
- Tenk på en klokke. Vi vet at klokken tikker, men hvordan stiller produsenten inn mutrene og boltene slik at den fortsetter å bevege seg hvert 60. sekund, min.viseren skal bevege seg og timeviseren hvert 60. minutt? Så for å løse dette problemet, må det være en algoritme bak.
- Har du sett noen lage favorittmaten din for deg? Er oppskriften nødvendig for det? Ja, det er nødvendig siden en oppskrift er en sekvensiell prosedyre som gjør en rå potet til en kjølig potet. Dette er hva en algoritme er: å følge en prosedyre for å få ønsket utgang. Er sekvensen nødvendig å følge? Ja, sekvensen er det viktigste som må følges for å få det vi ønsker.
Typer algoritmer:
- Sorteringsalgoritmer: Boblesortering, innsettingssortering og mange flere. Disse algoritmene brukes til å sortere dataene i et bestemt format.
- Søkealgoritmer: Lineært søk, binært søk osv. Disse algoritmene brukes til å finne en verdi eller post som brukeren krever.
- Grafalgoritmer : Den brukes til å finne løsninger på problemer som å finne den korteste veien mellom byer, og problemer i det virkelige liv som omreisende selgerproblemer.
Sorteringsalgoritmer er algoritmer som tar en samling av elementer og omorganiserer dem i en spesifisert rekkefølge (f.eks. stigende eller synkende). Det finnes mange forskjellige sorteringsalgoritmer, hver med sine egne styrker og svakheter. Noen av de mest brukte sorteringsalgoritmene inkluderer:
Boblesortering: En enkel sorteringsalgoritme som gjentatte ganger går gjennom listen, sammenligner tilstøtende elementer og bytter dem hvis de er i feil rekkefølge.
Innsettingssortering: En enkel sorteringsalgoritme som bygger opp den endelige sorterte matrisen ett element om gangen, ved å sammenligne hvert nytt element med elementene som allerede er sortert og sette det inn i riktig posisjon.
Utvalgssortering: En enkel sorteringsalgoritme som gjentatte ganger velger minimumselementet fra den usorterte delen av matrisen og flytter den til slutten av den sorterte delen.
Slå sammen sortering: En del-og-hersk sorteringsalgoritme som fungerer ved å dele den usorterte listen i n underlister, sortere hver underliste og deretter slå dem sammen til en enkelt sortert liste.
Rask sortering: En del-og-hersk-sorteringsalgoritme som fungerer ved å velge et pivotelement fra arrayet og dele de andre elementene i to underarrays, avhengig av om de er mindre enn eller større enn pivoten. Undermatrisene blir deretter sortert rekursivt.
Hver av disse algoritmene har forskjellige tids- og romkompleksiteter, noe som gjør noen mer egnet for visse brukstilfeller enn andre.
Søkealgoritmer er algoritmer som søker etter et bestemt element eller verdi i en datastruktur (som en matrise eller en koblet liste). Noen av de mest brukte søkealgoritmene inkluderer:
Lineært søk: En enkel søkealgoritme som itererer gjennom hvert element i en liste til den finner en match.
Binært søk: En søkealgoritme som fungerer ved å dele en sortert liste i to gjentatte ganger, til ønsket element er funnet eller det kan fastslås at elementet ikke er til stede.
java liste metoder
Hoppsøk: En søkealgoritme som fungerer ved å hoppe foran med faste trinn i listen, inntil en passende kandidat er funnet, og deretter utføre et lineært søk i de omkringliggende elementene.
Interpolasjonssøk : En søkealgoritme som fungerer ved å bruke informasjon om verdiområdet i listen for å estimere plasseringen til det ønskede elementet og deretter bekrefte at det faktisk er tilstede.
Hash-tabellsøk: En søkealgoritme som bruker en hash-funksjon for å kartlegge elementer til indekser i en matrise, og deretter utfører konstanttidsoppslag i matrisen for å finne ønsket element.
Hver av disse algoritmene har forskjellige tids- og romkompleksiteter, noe som gjør noen mer egnet for visse brukstilfeller enn andre. Valget av hvilken algoritme som skal brukes avhenger av de spesifikke kravene til problemet, som størrelsen på datastrukturen, fordelingen av verdier og ønsket tidskompleksitet.
Grafalgoritmer er et sett med algoritmer som brukes til å behandle, analysere og forstå grafdatastrukturer. Grafer er matematiske strukturer som brukes til å modellere forhold mellom objekter, hvor objektene er representert som hjørner (eller noder) og relasjonene mellom dem er representert som kanter. Grafalgoritmer brukes i en rekke applikasjoner som nettverksanalyse, sosial nettverksanalyse, anbefalingssystemer og i mange andre områder hvor det er viktig å forstå relasjonene mellom objekter. Noen av de vanlige grafalgoritmene inkluderer:
Shortest Path-algoritmer (f.eks. Dijkstra's, Bellman-Ford, A*)
Minimum Spanning Tree-algoritmer (f.eks. Kruskal, Prim)
Algoritmer for maksimal flyt (f.eks. Ford-Fulkerson, Edmonds-Karp)
Nettverksflyt-algoritmer (f.eks. Bipartite Matching)
Tilkoblingsalgoritmer (f.eks. dybde-først-søk, bredde-først-søk)
Hvorfor bruker vi algoritmer?
Tenk på to barn, Aman og Rohan, som løser Rubiks kube. Aman vet hvordan den skal løses i et bestemt antall trinn. På den annen side vet Rohan at han vil gjøre det, men er ikke klar over prosedyren. Aman løser kuben i løpet av 2 minutter mens Rohan fortsatt sitter fast og på slutten av dagen klarte han på en eller annen måte å løse den (kan ha jukset ettersom prosedyren er nødvendig).
Så tiden som kreves for å løse med en prosedyre/algoritme er mye mer effektiv enn uten noen prosedyre. Derfor er behovet for en algoritme et must.
Når det gjelder å designe en løsning på et IT-problem, er datamaskiner raske, men ikke uendelig raske. Minnet kan være billig, men ikke gratis. Så, databehandlingstid er derfor en avgrenset ressurs, og det samme er plassen i minnet. Så vi bør bruke disse ressursene klokt, og algoritmer som er effektive med tanke på tid og plass vil hjelpe deg med det.
Opprette en algoritme:
Siden algoritmen er språkuavhengig, skriver vi trinnene for å demonstrere logikken bak løsningen som skal brukes for å løse et problem. Men før du skriver en algoritme, husk følgende punkter:
- Algoritmen skal være klar og entydig.
- Det bør være 0 eller flere veldefinerte innganger i en algoritme.
- En algoritme må produsere en eller flere veldefinerte utdata som tilsvarer ønsket utgang. Etter et spesifikt antall trinn må algoritmer stoppe opp.
- Algoritmer må stoppe eller avsluttes etter et begrenset antall trinn.
- I en algoritme bør trinnvise instruksjoner leveres, og de bør være uavhengige av enhver datakode.
Eksempel: Algoritme for å multiplisere 2 tall og skrive ut resultatet:
Trinn 1: Start
Steg 2: Få kunnskap om innspill. Her trenger vi 3 variabler; a og b vil være brukerinndata og c vil holde resultatet.
Trinn 3: Deklarer a, b, c variabler.
Trinn 4: Ta input for a og b variabel fra brukeren.
Trinn 5: Kjenn problemet og finn løsningen ved hjelp av operatører, datastrukturer og logikkVi må multiplisere a- og b-variablene, så vi bruker *-operatoren og tilordner resultatet til c.
Det vil si c <- a * bTrinn 6: Sjekk hvordan du gir utdata, her må vi skrive ut utdataene. Så skriv print c
Trinn 7: Slutt
Eksempel 1: Skriv en algoritme for å finne maksimum av alle elementene som er tilstede i matrisen.
Følg algoritmetilnærmingen som nedenfor:
Trinn 1: Start programmet
Steg 2: Deklarer en variabel max med verdien av det første elementet i matrisen.
Trinn 3: Sammenlign maks med andre elementer ved å bruke loop.
Trinn 4: Hvis maksTrinn 5: Hvis det ikke er noe element igjen, returner eller skriv ut max ellers gå til trinn 3.
Trinn 6: Slutt på løsning
Eksempel 2: Skriv en algoritme for å finne gjennomsnittet av 3 fag.
Følg algoritmen som følger:
c++ sett
Trinn 1: Start programmet
Steg 2: Erklær og les 3 emne, la oss si S1, S2, S3
Trinn 3: Beregn summen av alle de 3 emneverdiene og lagre resultatet i Sum-variabelen (Sum = S1+S2+S3)
Trinn 4: Del Sum med 3 og tilordne den til Average variabel. (Gjennomsnitt = Sum/3)
Trinn 5: Skriv ut verdien av Gjennomsnitt av 3 emner
Trinn 6: Slutt på løsning
Vet om algoritmekompleksitet:
Kompleksitet i algoritmer refererer til mengden ressurser (som tid eller minne) som kreves for å løse et problem eller utføre en oppgave. Det vanligste målet på kompleksitet er tidskompleksitet, som refererer til hvor lang tid en algoritme bruker på å produsere et resultat som en funksjon av størrelsen på input. Minnekompleksitet refererer til mengden minne som brukes av en algoritme. Algoritmedesignere streber etter å utvikle algoritmer med lavest mulig tids- og minnekompleksitet, siden dette gjør dem mer effektive og skalerbare.
Kompleksiteten til en algoritme er en funksjon som beskriver effektiviteten til algoritmen i forhold til mengden data algoritmen må behandle.
Vanligvis er det naturlige enheter for denne funksjonens domene og rekkevidde.
En algoritme analyseres ved hjelp av tidskompleksitet og romkompleksitet. Å skrive en effektiv algoritme bidrar til å bruke minst mulig tid for å behandle logikken. For algoritme A bedømmes den på grunnlag av to parametere for en inngang av størrelse n:
- Tidskompleksitet: Tiden det tar for algoritmen å løse problemet. Det måles ved å beregne iterasjonen av løkker, antall sammenligninger osv.
- Tidskompleksitet er en funksjon som beskriver hvor lang tid en algoritme tar i form av mengden input til algoritmen.
- Tid kan bety antall utførte minnetilganger, antall sammenligninger mellom heltall, antall ganger en indre sløyfe blir utført, eller en annen naturlig enhet relatert til hvor mye sanntid algoritmen vil ta.
- Plass kompleksitet: Plass tatt av algoritmen for å løse problemet. Det inkluderer plass brukt av nødvendige inngangsvariabler og eventuell ekstra plass (unntatt plass tatt av innganger) som brukes av algoritmen. Hvis vi for eksempel bruker en hash-tabell (en slags datastruktur), trenger vi en matrise for å lagre verdier slik at
- dette er en ekstra plass okkupert, og vil derfor telle mot plasskompleksiteten til algoritmen. Denne ekstra plassen er kjent som Auxiliary Space.
- Plasskompleksitet er en funksjon som beskriver mengden minne(plass) en algoritme tar i form av mengden input til algoritmen.
- Romkompleksitet blir noen ganger ignorert fordi plassen som brukes er minimal og/eller åpenbar, men noen ganger blir det et problem etter hvert.
. Tidskompleksiteten til operasjonene:
- Valget av datastruktur bør baseres på tidskompleksiteten til operasjonene som skal utføres.
- Tidskompleksitet er definert i form av hvor mange ganger det tar å kjøre en gitt algoritme, basert på lengden på inngangen.
- Tidskompleksiteten til en algoritme er hvor lang tid det tar for hver setning å fullføre. Det er svært avhengig av størrelsen på de behandlede dataene.
- Hvis du for eksempel trenger å utføre søk ofte, bør du bruke et binært søketre.
.Operasjonenes plasskompleksitet:
- Valget av datastruktur bør baseres på plasskompleksiteten til operasjonene som skal utføres.
- Mengden minne som brukes av et program for å utføre det, er representert av dets plasskompleksitet.
- Fordi et program krever minne for å lagre inndata og tidsverdier mens det kjører , er plasskompleksiteten ekstra og inndataplass.
- Hvis du for eksempel trenger å lagre mye data, bør du bruke en array.
saker i kompleksitet:
Det er to ofte studerte tilfeller av kompleksitet i algoritmer:
1. Best case kompleksitet: Det beste scenarioet for en algoritme er scenariet der algoritmen utfører minst mulig arbeid (f.eks. tar kortest tid, bruker minst minne osv.).
2. Kompleksitet i verste fall: Det verste tilfellet for en algoritme er scenariet der algoritmen utfører maksimalt arbeid (f.eks. tar lengst tid, bruker mest minne osv.).
Ved å analysere kompleksiteten til en algoritme er det ofte mer informativt å studere det verste tilfellet, da dette gir en garantert øvre grense for ytelsen til algoritmen. Best-case scenario-analyse utføres noen ganger, men er generelt mindre viktig da det gir en nedre grense som ofte er triviell å oppnå.
Fordeler med algoritmer
- Enkelt å forstå: Siden det er en trinnvis representasjon av en løsning på et gitt problem, er det lett å forstå.
- Språkuavhengig: Det er ikke avhengig av noe programmeringsspråk, så det kan lett forstås av alle.
- Feilsøking / feilsøking: Hvert trinn er uavhengig / i en flyt, så det vil være enkelt å oppdage og fikse feilen.
- Underproblemer: Det er skrevet i en flyt så nå kan programmereren dele opp oppgavene som gjør dem lettere å kode.
Ulemper med algoritmer
- Å lage effektive algoritmer er tidkrevende og krever gode logiske ferdigheter.
- Ekkelt å vise forgrening og looping i algoritmer.