logo

Algoritme i C-språk

En algoritme er en sekvens av instruksjoner som utføres i en forhåndsbestemt sekvens for å løse et problem eller fullføre et arbeid. En funksjon er en kodeblokk som kan kalles og utføres fra andre deler av programmet.

Et sett med instruksjoner for å løse et problem eller utføre en bestemt aktivitet. I informatikk brukes algoritmer til et bredt spekter av operasjoner, fra grunnleggende matematikk til intrikat databehandling.

En av de vanlige algoritmene som brukes i C er sorteringsalgoritmen. En sorteringsalgoritme arrangerer en samling av elementer i en bestemt rekkefølge, for eksempel numerisk eller alfabetisk.

Det er mange sorteringsalgoritmer, hver med fordeler og ulemper. De vanligste sorteringsalgoritmene i C er quicksort, merge og sort.

En av nøkkelfunksjonene til C er pekerstøtte. Dette tillater effektiv manipulering av datastrukturer som arrays, køer etc. Dette gjør den egnet for implementering av algoritmer som krever kompleks datamanipulering, som sortering og algoritmisk søking.

Et av de kjente eksemplene på programvarebibliotek implementert i C er Standard Template Library (STL). Dette biblioteket tilbyr et bredt utvalg av algoritmer for oppgaver som sortering, søking og manipulering av datastrukturer.

Funksjoner av algoritmen

Den definerer flere viktige funksjoner i algoritmen, inkludert:

    Innganger: Algoritmer må motta innganger som kan representeres som verdier eller data.Produksjon: Algoritmen skal produsere noe utdata. Det kan være en konsekvens av et problem eller en løsning designet for å løse det.Klarhet: Algoritmer må være nøyaktig definert ved å bruke entydige instruksjoner som en datamaskin eller et annet system kan følge entydig.Begrensethet: Algoritmen krever et begrenset trinn. Det betyr at den skal avsluttes etter å ha utført et visst antall kommandoer.Gyldighet: Algoritmen må være gyldig. Den skal med andre ord kunne produsere en løsning på problemet som algoritmen er designet for å løse innen rimelig tid.Effektivitet:En algoritme må være effektiv, det vil si at den må kunne produsere en løsning på problemet den er designet for å løse innen rimelig tid.Generelt:En algoritme må være generell, noe som betyr at den kan brukes på et bredt spekter av problemer i stedet for å være spesifikk for et enkelt problem.

Algoritmeanalyse

Algoritmisk analyse er prosessen med å evaluere algoritmeytelse i form av effektivitet, kompleksitet og andre kriterier. Vanligvis gjøres dette for å evaluere mange algoritmer og velge den optimale løsningen for et bestemt problem eller en programvare.

Analyse av algoritmer innebærer vanligvis å måle kompleksiteten i tid og rom.

Som med plasskompleksitet, som beskriver mengden minne eller diskplass som trengs, beskriver tidskompleksitet hvor lenge en algoritme bestemmer seg for å utføre en oppgave.

Det er forskjellige måter å analysere tidskompleksiteten til algoritmer på, for eksempel Big O og Omega-notasjon. Omega-symbolet gir en øvre grense for algoritmens tidskompleksitet, mens Omega-symbolet gir en nedre grense.

I tillegg til å måle tid og romkompleksitet, inkluderer algoritmeanalyse også andre kriterier som stabilitet, parallellitet og skalerbarhet.

    Stabilitet:- Dette refererer til algoritmens evne til å opprettholde den relative rekkefølgen til elementene i datasettet.Parallellisering:- Dette refererer til kapasiteten til å utføre operasjoner parallelt på tvers av flere prosessorer.Skalerbarhet:- På den annen side refererer det til evnen til en algoritme til å håndtere store mengder data og andre innganger.

De inkluderer to typer analyser.

de er:-

  1. Forhåndsanalyse.
  2. Posterior analyse.

Forutgående analyse

Prior er en metode for algoritmeanalyse som fokuserer på å estimere ytelsen til en algoritme basert på dens matematiske egenskaper uten å faktisk utføre algoritmen.

Denne tilnærmingen lar deg analysere tids- og romkompleksiteten til algoritmer og andre beregninger uten å måtte implementere og kjøre algoritmene.

Posterior analyse

Posterior analyse, derimot, er en metode for algoritmeanalyse som faktisk utfører algoritmen og måler dens ytelse.

Denne tilnærmingen gir mer nøyaktig og detaljert informasjon om ytelsen til algoritmen, men krever implementering og utførelse av algoritmen.

Algoritme kompleksitet

Algoritmisk kompleksitet er et mål for å måle effektiviteten og ytelsen til algoritmen. Algoritmer blir vanligvis evaluert i forhold til tid og plass som kreves for å løse et problem eller oppnå et spesifikt mål.

To faktorer brukes i kompleksiteten til algoritmen.

de er:-

  1. Tidsfaktor.
  2. Plassfaktor.

Tidsfaktor

  • Hvor lang tid en algoritme trenger for å utføre en oppgave, kalles tidskompleksitet. Den måles vanligvis ved antall operasjoner eller trinn en algoritme må utføre for å løse et problem.
  • Tidskompleksiteten til en algoritme er viktig fordi den bestemmer hvor lang tid det tar å utføre og kan ha en betydelig innvirkning på program- og systemytelse.
  • Tidskompleksiteten til en algoritme kan uttrykkes ved hjelp av Big O-notasjon, en måte å uttrykke en øvre grense for tidskompleksiteten til en algoritme.
  • En algoritme med tidskompleksitet O(n) betyr at tiden som kreves for å kjøre algoritmen er direkte proporsjonal med størrelsen på inngangsdataene (n).
  • Andre vanlige tidskompleksiteter er O(n^2) kvadratisk kompleksitet og O(log n) logaritmisk kompleksitet.

Romanalyse

  • På den annen side refererer plasskompleksitet til mengden minne eller lagringsplass som kreves for å utføre algoritmen.
  • Dette er viktig fordi det bestemmer antall ressurser som kreves for å kjøre algoritmer som kan påvirke den generelle ytelsen til applikasjonen eller systemet.
  • Hvis plasskompleksiteten til algoritmen er O(n), bruker den en mengde minne som vokser lineært med størrelsen på inngangen.
  • Hvis algoritmen har O(1) plasskompleksitet, bruker den en fast mengde minne uavhengig av størrelsen på inngangen.

Hvordan skrive en algoritme

1. Definer først problemet du vil at algoritmen skal løse.

Anta for eksempel at vi vil skrive en algoritme for å finne maksimumsverdien fra en liste med tall.

2. Del opp problemet i mindre, håndterbare trinn.

  • Initialiser 'max'-variabelen til den første verdien i listen.
  • For hver påfølgende verdi i listen, sammenlign med 'maks'.
  • Hvis verdien er større enn 'maks', setter du 'maks' til den verdien.
  • Fortsett å gjøre dette til hver verdi i listen er sammenlignet.
  • Returnerer den endelige 'maks'-verdien.

3. Skriv algoritmen din i pseudokode eller et programmeringsspråk.

preity zinta

Algoritme skrevet i pseudokode:

 MAX (list) max = list[0] For i = 1 the length of the list list IF[i] > max max = list[i] End for Maximum return Maximum end 

4. Test algoritmen din for å sikre at den er riktig og effektiv.

Du kan teste algoritmen ved å legge inn forskjellige lister med tall og verifisere at den returnerer maksimalt riktig verdi. Du kan også analysere tidskompleksiteten til algoritmen din for å finne ut hvor godt den skaleres for større innganger.

Eksempel:-

Inndata: [1, 5, 2, 7, 3]

Utgang: 7.

Forklaring: 7 er maksimumsverdien i listen.

5. Optimaliser algoritmen.

Se etter måter å optimalisere algoritmer for å gjøre dem raskere og mer effektive. Dette kan innebære å endre pseudokode eller implementere mer effektive datastrukturer eller algoritmer.

Grunnleggende skriving av algoritmer

Eksempel: - Summen av to heltall.

Trinn 1 - Kom i gang

Steg 2 - Erklær tre heltall a, b, c

Trinn 3 - Definer verdiene til a og b

Trinn 4 - Legg til verdiene til a og b

Trinn 5 - Lagre utdataene fra trinn 4 i c

Trinn 6 - Trykk c

Trinn 7 - Stoppe

Type algoritmer som brukes i C-språk.

1. Sorteringsalgoritmer

C gir et rikt sett med datatyper og operatorer som kan brukes til å implementere ulike sorteringsalgoritmer som boblesortering, innsettingssortering og hurtigsortering.

Disse algoritmene er nyttige i mange applikasjoner fordi de kan brukes til å sortere data av forskjellige størrelser og typer.

Det finnes forskjellige sorteringsalgoritmer.

de er:-

(i) Boblesortering: En ukomplisert sorteringsalgoritme som sammenligner komponenter i nærheten gjentatte ganger og slår dem ut hvis de er ute av drift.

gjøre skriptet kjørbart

Algoritmen for boblesortering er: -

  1. Start med en usortert liste over elementer.
  2. Sammenlign de to første elementene i listen. Hvis det første elementet er større enn det andre elementet, bytt dem.
  3. Gå videre til neste elementpar og gjenta trinn 2 til slutten av listen er nådd.
  4. For hvert element på listen, gjenta trinn 2 og 3 en gang til. som er referert til som pass.
  5. Gjenta trinn 2-4 for hele listen. Når du gjentar passeringene, vil elementene 'boble opp' til riktig posisjon i den sorterte listen.
  6. Når et pass er fullført og ingen bytter er gjort, sorteres listen, og algoritmen kan stoppe.
  7. Den endelige sorterte listen returneres.

(ii) Innsettingssortering : en metode for sortering som lager en sortert liste ett enkelt element om gangen ved å plassere hvert enkelt på riktig sted.

Algoritmen for innsettingssortering er: -

  1. Initialiser en tom sortert liste og en usortert liste over elementene som skal sorteres.
  2. Det første medlemmet fra den usorterte listen bør tas og plasseres på riktig plass i den sorterte listen.
  3. Gjenta trinn 2 for hvert påfølgende element i den usorterte listen.
  4. Sammenlign det gjeldende elementet med elementene i den sorterte listen, og start med elementet umiddelbart til venstre.
  5. Bytt om de to elementene hvis det gjeldende elementet er mindre enn elementet til venstre for det.
  6. Hvis det gjeldende elementet er større enn elementet til venstre for det, setter du det inn på riktig plassering i den sorterte listen.
  7. Gjenta trinn 4-6 for hvert påfølgende element i den usorterte listen.
  8. Når alle elementene er behandlet, vil den sorterte listen inneholde alle elementene i riktig rekkefølge.
  9. Sorteringsprosessen er fullført.

(iii) Utvalgssortering : en sorteringsmetode som konsekvent starter den sorterte oppføringen med den minste detalj fra den uordnede oppføringen.

Algoritmen for utvalgssortering er: -

  1. Begynn med å angi det primære elementet i listen som min-elementet.
  2. Gjenta gjennom de gjenværende elementene i listen, og sammenlign hver enkelt med gjeldende minimum.
  3. Sett et nytt minimum hvis et element er funnet å være mindre enn det eksisterende.
  4. Endre gjeldende minimum til det første elementet i listen når den når sin konklusjon.
  5. For den gjenværende usorterte delen av oppføringen, gjenta trinn 2-4, men begynn med det andre elementet på listen (ettersom det første elementet allerede er sortert).
  6. Fortsett å sortere listen på denne måten til alt er sortert.

(iv) Rask sortering : En del-og-hersk sorteringsalgoritme som velger et pivotelement og deler listen i underlister avhengig av om elementene er færre enn eller flere enn pivoten. Deretter blir underlistene sortert gjentatte ganger til hele listen er sortert.

Algoritmen for rask sortering er:

  1. Velg et pivotelement fra listen. Dette er vanligvis det første elementet, men det kan også være et tilfeldig element eller medianen til listen.
  2. Del listen i to underlister: én som inneholder elementer mindre enn pivoten og én som inneholder elementer som er større enn pivoten.
  3. Sorter rekursivt underlisten som inneholder elementer mindre enn pivoten ved å bruke samme prosess.
  4. Bruk samme prosedyre for å rekursivt sortere underlisten over oppføringer som er større enn pivoten.
  5. Sammenslå de sorterte underlistene med pivotelementet i mellom for å danne en fullstendig sortert liste.
  6. Returner den fullstendig sorterte listen.

(v) Lot går : Del-og-hersk-sorteringsalgoritmen deler listen i to halvdeler, sorterer hver halvdel og slår deretter sammen de to halvdelene i sortert rekkefølge.

Slå sammen-sorteringsalgoritme:

  1. Lag to underlister ut av listen: en med elementer under pivoten og en med elementer over pivoten.
  2. Produserer en ny sortert underliste ved iterativt å slå sammen underlister til bare én underliste eksisterer. Dette vil være din sorterte liste.
  3. Trinn for å slå sammen to underkataloger: -
  4. Opprett en tom liste for å holde de sorterte elementene.
  5. Sammenligner det første elementet i hver underliste.
  6. Legger til det mindre elementet i den nye listen og fjerner det fra den overordnede underlisten.
  7. Gjenta trinn 2 og 3 til en liste er helt tom.
  8. Legger til de gjenværende elementene fra andre underlister til en ny liste.
  9. Erstatter den sammenslåtte underlisten med den nye sorterte listen.
  10. Gjenta denne prosessen til alle underlistene er slått sammen til én sortert liste.

(vi) Heap sortering : En sorteringsalgoritme som sorterer elementer ved hjelp av en datastruktur kalt heap.

Dette er klassifiseringsalgoritmen:

    Bygg maks haug: Start med den første noden uten blader, sammenlign hver node med dens underordnede noder og bytt ut nodene med den største av dens underordnede node for å tilfredsstille egenskapen max heap.Bytt rot med siste element: Bytt roten (det største elementet) med det siste elementet i stabelen.
  1. Stable resten av elementene. Med utgangspunkt i roten sammenlignes hver node med sine barn, og bytter noder med sine eldre barn til egenskapen max heap er oppfylt.
  2. Gjenta trinn 2 og 3 med de nylig stablede elementene, bortsett fra det siste elementet i riktig posisjon.
  3. Gjenta denne prosessen til bare ett element er igjen i stabelen. Dette er nå ordnet.
  4. Heapify ned: Med utgangspunkt i rotnoden sammenligner den elementer med sine underordnede elementer og bytter med den største av de to inntil egenskapen max heap er oppfylt.Heapify Up: Start med det siste elementet i heapen, sammenlign det med dets overordnede element, og bytt det med det overordnede elementet for å tilfredsstille egenskapen max heap.

(vii) Radix sortering : En sorteringsalgoritme som sorterer elementer basert på sifrene eller sifrene i deres binære representasjon.

Algoritmen for Radix-sortering er: -

  1. bestemme hvor mange sifre som er inneholdt i inndataoppføringens største element.
  2. Initialiser en variabel, si siffersted, til 1, som representerer gjeldende siffersted.
  3. Lag en tom liste for hver mulig sifferverdi fra 0 til 9.
  4. Iterer gjennom inndatalisten og legg til hvert element i den aktuelle listen basert på verdien av gjeldende siffersted.
  5. Slå sammen alle listene for å danne den nye listen i rekkefølgen til sifferlistene.
  6. Multipliser sifferPlasser med 10 for å flytte til neste siffersted.
  7. Gjenta trinn 4-6 for hvert siffersted til alle sifrene i det største elementet har blitt vurdert.
  8. Den endelige listen vil bli sortert i stigende rekkefølge etter sifrene til elementene.
  9. Returner den endelig sorterte listen.

2. Søkealgoritmer

C gir også verktøyene som er nødvendige for å implementere en rekke søkealgoritmer, for eksempel lineært søk og binært søk. Disse algoritmene kan raskt finne spesifikke elementer i et datasett, noe som gjør dem nyttige for et bredt spekter av applikasjoner.

Det finnes mange typer søkealgoritmer.

De er:-

(i) Lineært søk : En grunnleggende søkealgoritme som undersøker hvert element i oppføringen én etter én til den finner ønsket element.

Algoritme for lineært søk:-

  1. Definer inndata for algoritmen: Inndata for en lineær søkealgoritme er en liste over elementer (eller en matrise) og et målelement vi søker etter.
  2. Initialiser en variabel kalt 'indeks' til -1: Denne variabelen vil bli brukt til å lagre indeksen til målelementet hvis den blir funnet.
  3. Gå gjennom listen over elementer: Start fra det første elementet, sjekk hvert element i listen ett etter ett.
  4. Sammenlign det nåværende elementet med det ønskede elementet for evaluering: Hold indeksen til det gjeldende elementet i indeksvariabelen og gå ut av loopen hvis det moderne elementet og målelementet er identiske.
  5. Returner indeksen til målelementet: Etter at løkken er fullført, returner verdien som er lagret i indeksvariabelen. Hvis målelementet ikke blir funnet, vil verdien av indeksen være -1.

(ii) Binært søk : En søkealgoritme som opererer ved å dele oppføringen i halvdeler og søk innenfor disse halvdelene er mer sannsynlig å inkludere elementet.

Algoritme for binært søk:-

  1. Inndata: En sortert liste med n elementer og et målelement x.
  2. Initialiser variabler: Sett lavindeksen til 0, høyindeksen til n-1 og middels til (lav+høy)/2.
  3. Start en sløyfe: Mens den lave indeksen er mindre enn eller lik den høye indeksen, gjentar du følgende trinn.
  4. Sammenlign midtelementet med x: Hvis midtelementet er lik x, returner midtindeksen.
  5. Oppdater den lave eller høye indeksen: Hvis x er større enn midtelementet, setter du lavindeksen til midt + 1. Ellers setter du den høye indeksen til midt - 1.
  6. Oppdater midtindeksen: Mid = (lav+høy)/2.
  7. Slutt på sløyfen: Hvis den lave indeksen er større enn den høye indeksen, er ikke x i listen, og algoritmen returnerer en feil.
  8. Utdata: Indeksen til x i listen eller feilmeldingen.

(iii) Dybde-første søk : En søkealgoritme som undersøker hver gren så langt det er mulig før du snur.

Følgende retningslinjer gjelder for dybde-først-søk:

  1. velg grafens startpunkt eller node til å begynne med.
  2. Legg til et besøksmerke til det første toppunktet.
  3. Plasser startpunktet direkte i en stabel.
  4. Gjenta følgende handlinger til stabelen er tom: -
    • Fjern stabelens øverste toppunkt.
    • Merk som besøkt og sett inn i stabelen hver ubesøkt nabo til det sprangede toppunktet.
  5. Fortsett denne prosessen til alle toppunktene i grafen er besøkt.
  6. Når alle hjørnene er besøkt, er algoritmen fullført, og et dybdesøk utføres på grafen.

(iv) Bredde-først søk : En søkealgoritme som utforsker alle naboene til en node før den går til neste nivå.

Algoritmen for bredde-første søk er:

  1. Start med rotnoden eller starttilstanden.
  2. Legg til rotnoden i en kø.
  3. Sjekk om køen er tom; hvis ja, avslutt algoritmen.
  4. Ta det første elementet fra køen og merk det som besøkt.
  5. Forsterk den moderne noden ved å legge til alle ubesøkte naboer i køen.
  6. Gjenta trinn 3 til 5 til den ønskede noden er lokalisert eller køen er tom.
  7. Returner banen fra den foreløpige tilstanden til måltilstanden hvis målnoden blir funnet.
  8. Avslutt regelsettet og rapporter at måltilstanden ikke ble identifisert hvis køen er tom.

(v) Interpolasjonssøk : En søkealgoritme som bruker verdiene til de søkte elementene for å estimere plasseringen i indeksen.

Det er viktig at matrisen er jevnt fordelt. Ellers er det en algoritme.

Det fungerer som forventet.

Algoritmen kan oppsummeres som følger.

  1. Få inndatalisten og nøkkelverdien for å søke.
  2. Initialiser de nedre og øvre variablene ved den første og siste indeksen på listen.
  3. Hvis den nedre verdien er mindre enn eller lik høyere verdi, så :-
    1. Beregn den estimerte plasseringen ved å bruke følgende formel:
      pos = lav + ((høy - lav) / (arr[høy] - arr[lav])) * (x - arr[lav]).
    2. Returner posisjonen hvis den estimerte posisjonsverdien er en nøkkelverdi.
    3. c) Hvis den estimerte posisjonsverdien er mindre enn nøkkelverdien, sett den lavere.
      Posisjon + 1.
    4. d) Hvis verdien av den estimerte posisjonen er større enn nøkkelen Sett verdi, posisjon - 1 opp.
  4. Hvis nøkkelverdien ikke finnes, returnerer du -1 for å indikere at verdien ikke er i listen.

(vi) Hoppsøk : En søkemetode som itererer over listen i trinn med konstant lengde til den finner det relevante elementet eller fastslår at det ikke lenger er til stede.

Hoppsøkealgoritmen er som følger:

  1. Først setter du hoppstørrelsen til kvadratroten av antall matriseelementer.
  2. Setter en variabel kalt 'current' til det første elementet i matrisen.
  3. Itererer over matrisen ved å hoppe etter hoppstørrelse mens du øker en variabel kalt 'hopp'.
  4. Gå videre til følgende sprang hvis det eksisterende elementet er mindre enn ønsket element.
  5. Hvis det gjeldende elementet er større enn målelementet, utfør et lineært søk mellom det gjeldende elementet og det forrige hoppelementet for å finne målelementet.
  6. Hvis målelementet ikke finnes i matrisen, returnerer det -1 for å indikere at det ikke er i matrisen.
  7. Hvis elementet blir funnet, returnerer det elementets indeks i matrisen.

3. Grafalgoritmer

Cs støtte for pekere og datastrukturer som arrays og koblede lister gjør den egnet for å implementere algoritmer som manipulerer grafer, for eksempel å finne den korteste veien mellom to noder i en graf.

Det finnes forskjellige typer grafalgoritmer.

de er:-

    Dijkstras algoritme: En algoritme som finner den korteste veien mellom to noder i en graf ved kontinuerlig å oppdatere den korteste avstanden fra hver node.Algoritme A*: En metode som kontinuerlig oppdaterer den korteste kursen til hver node i en graf for å bestemme den korteste ruten mellom dem.Prims algoritme: En tilnærming for å finne ut den vektede tilkoblede grafens minste spenntre.Kruskals algoritme: En tilnærming for å identifisere den koblede vektede grafens laveste spenntre.Bellman-Ford algoritme: En algoritme som, selv når grafen har negative kantvekter, viser den korteste veien mellom en bestemt forsyningsnode og annenhver node i nettverket.

4. Kryptografiske algoritmer

C støtter operasjoner på lavt nivå og effektiv datamanipulering, noe som gjør den ideell for implementering av algoritmer som brukes i kryptografi, for eksempel datakryptering og dekrypteringsalgoritmer.

Det finnes forskjellige typer krypteringsalgoritmer.

java til json-objekt

De er:-

    Hash-algoritmer: Disse algoritmene produserer utdata med fast størrelse (hash) fra innganger i vilkårlig størrelse. Eksempler inkluderer MD5, SHA-1 og SHA-2.Symmetriske nøkkelalgoritmer: Krypterings- og dekrypteringstrinnene i slike algoritmer bruker den samme private nøkkelen. AES, DES og Blowfish er noen få eksempler.Asymmetriske nøkkelalgoritmer: En offentlig nøkkel og en ikke-offentlig nøkkel brukes av disse metodene som separate nøkler for kryptering og dekryptering. Noen eksempler inkluderer RSA, ECC og DSA.Nøkkelutvekslingsalgoritmer: Disse algoritmene lar to parter utveksle nøkler over en usikker kanal på en sikker måte. For eksempel kan vi nevne Diffie-Hellman og Elliptic Curve Diffie-Hellman.

Fordeler med algoritmen

Algoritmer har mange fordeler.

de er:-

    Hastighet og effektivitet: Algoritmer kan behandle store mengder data raskt og nøyaktig, noe som gjør dem nyttige for oppgaver som er for tidkrevende eller utsatt for feil for folk å utføre.Konsistens: Algoritmer følger et sett med forhåndsbestemte retningslinjer. Det kan gi konsistente resultater uten å bli påvirket av personlige skjevheter og følelser.Automasjon: Algoritmer kan utføre oppgaver automatisk, slik at folk kan fokusere på mer komplekse eller kreative oppgaver.Økt nøyaktighet: Algoritmer kan ofte oppnå høyere nivåer av nøyaktighet enn mennesker, spesielt når de arbeider med store datamengder.Bedre beslutningstaking: Algoritmer hjelper oss å ta mer informerte og objektive beslutninger ved å analysere data og identifisere mønstre og trender som ikke er lett synlige for folk.Skalerbarhet: Algoritmer kan enkelt skaleres opp eller ned for å møte endrede krav og arbeidsbelastninger.

Ulemper med algoritmen

Algoritmer er veldig nyttige for programmering, men algoritmer har ulemper.

de er:-

    Begrenset omfang: Algoritmer kan bare løse problemer innenfor deres rekkevidde og kan kanskje ikke løse komplekse eller abstrakte problemer.Partiskhet: Algoritmer kan opprettholde og forsterke skjevheter i dataene som brukes til trening, noe som fører til urettferdige resultater.Utilstrekkelig åpenhet: Mange algoritmer skjuler prosessen der de kommer frem til sine konklusjoner. Dette kan gjøre det vanskelig å tenke på eller sjekke resultatene.Stol på dataenes finhet:Riktigheten til regelsettet er sterkt avhengig av finheten og anvendeligheten til dataene som brukes i instruksjonen. Unøyaktige eller unøyaktige effekter kan være et resultat av feil data.begrenset tilpasningsevne:Algoritmer er utviklet for å følge retningslinjer og vil ikke tilpasse seg endrede omstendigheter og forhold.