logo

Algoritmus v jazyku C

Algoritmus je postupnosť inštrukcií, ktoré sa vykonávajú vo vopred určenom poradí s cieľom vyriešiť problém alebo dokončiť prácu. Funkcia je blok kódu, ktorý možno volať a vykonávať z iných častí programu.

Súbor pokynov na vyriešenie problému alebo vykonanie určitej činnosti. V informatike sa algoritmy používajú na širokú škálu operácií, od základnej matematiky až po zložité spracovanie údajov.

Jedným z bežných algoritmov používaných v C je triediaci algoritmus. Algoritmus triedenia usporiada kolekciu položiek v určitom poradí, napríklad číselne alebo abecedne.

Existuje mnoho triediacich algoritmov, z ktorých každý má výhody a nevýhody. Najbežnejšie triediace algoritmy v C sú rýchle triedenie, zlúčenie a triedenie.

Jednou z kľúčových vlastností C je podpora ukazovateľa. To umožňuje efektívnu manipuláciu s dátovými štruktúrami, ako sú polia, fronty atď. Vďaka tomu je vhodný na implementáciu algoritmov, ktoré vyžadujú komplexnú manipuláciu s dátami, ako je triedenie a algoritmické vyhľadávanie.

Jedným zo slávnych príkladov softvérovej knižnice implementovanej v jazyku C je štandardná knižnica šablón (STL). Táto knižnica poskytuje širokú škálu algoritmov pre úlohy, ako je triedenie, vyhľadávanie a manipulácia s dátovými štruktúrami.

Vlastnosti algoritmu

Definuje niekoľko dôležitých funkcií algoritmu, vrátane:

    Vstupy: Algoritmy musia prijímať vstupy, ktoré môžu byť reprezentované ako hodnoty alebo údaje.Výkon: Algoritmus by mal produkovať nejaký výstup. Môže to byť dôsledok problému alebo riešenie určené na jeho vyriešenie.Jasnosť: Algoritmy musia byť presne definované pomocou jednoznačných pokynov, ktoré môže počítač alebo iný systém jednoznačne nasledovať.Konečnosť: Algoritmus vyžaduje obmedzený počet krokov. To znamená, že by mal byť ukončený po vykonaní určitého počtu príkazov.Platnosť: Algoritmus musí byť platný. Inými slovami, mal by byť schopný vytvoriť riešenie problému, na vyriešenie ktorého je algoritmus navrhnutý, v primeranom čase.Účinnosť:Algoritmus musí byť efektívny, čo znamená, že musí byť schopný v primeranom čase poskytnúť riešenie problému, ktorý má vyriešiť.Všeobecnosť:Algoritmus musí byť všeobecný, čo znamená, že ho možno použiť na širokú škálu problémov, a nie špecifický na jeden problém.

Algoritmová analýza

Algoritmická analýza je proces hodnotenia výkonnosti algoritmu z hľadiska efektívnosti, zložitosti a iných kritérií. Zvyčajne sa to robí na vyhodnotenie mnohých algoritmov a výber optimálneho riešenia pre určitý problém alebo softvér.

Analýza algoritmov zvyčajne zahŕňa meranie ich časovej a priestorovej zložitosti.

Rovnako ako v prípade priestorovej zložitosti, ktorá popisuje množstvo pamäte alebo potrebného miesta na disku, časová zložitosť opisuje, ako dlho algoritmus vykonáva úlohu.

Existujú rôzne spôsoby, ako analyzovať časovú zložitosť algoritmov, ako je zápis Big O a Omega. Symbol Omega poskytuje hornú hranicu časovej zložitosti algoritmu, zatiaľ čo symbol Omega poskytuje dolnú hranicu.

Okrem merania časovej a priestorovej zložitosti zahŕňa analýza algoritmov aj ďalšie kritériá, ako je stabilita, paralelizmus a škálovateľnosť.

    Stabilita:- Toto sa týka schopnosti algoritmu udržiavať relatívne poradie prvkov v súbore údajov.Paralelizácia:- Ide o schopnosť vykonávať operácie paralelne na niekoľkých procesoroch.Škálovateľnosť:- Na druhej strane sa to týka schopnosti algoritmu spracovať veľké objemy údajov a iných vstupov.

Zahŕňajú dva typy analýz.

oni sú:-

  1. Predbežná analýza.
  2. Zadná analýza.

Predchádzajúca analýza

Prior je metóda analýzy algoritmov, ktorá sa zameriava na odhad výkonu algoritmu na základe jeho matematických vlastností bez skutočného vykonania algoritmu.

Tento prístup vám umožňuje analyzovať časovú a priestorovú zložitosť algoritmov a iných metrík bez potreby implementácie a spúšťania algoritmov.

zachrániť z

Zadná analýza

Na druhej strane zadná analýza je metóda analýzy algoritmu, ktorá v skutočnosti vykonáva algoritmus a meria jeho výkon.

Tento prístup poskytuje presnejšie a podrobnejšie informácie o výkone algoritmu, ale vyžaduje implementáciu a vykonanie algoritmu.

Zložitosť algoritmu

Algoritmická zložitosť je miera na meranie účinnosti a výkonu algoritmu. Algoritmy sa zvyčajne hodnotia z hľadiska času a priestoru potrebného na vyriešenie problému alebo dosiahnutie konkrétneho cieľa.

V zložitosti algoritmu sa používajú dva faktory.

oni sú:-

  1. Časový faktor.
  2. Priestorový faktor.

Časový faktor

  • Čas, ktorý algoritmus potrebuje na vykonanie úlohy, sa označuje ako časová zložitosť. Zvyčajne sa meria počtom operácií alebo krokov, ktoré musí algoritmus vykonať, aby vyriešil problém.
  • Časová zložitosť algoritmu je dôležitá, pretože určuje, ako dlho trvá jeho vykonanie a môže mať významný vplyv na výkon programu a systému.
  • Časová zložitosť algoritmu môže byť vyjadrená pomocou notácie Big O, čo je spôsob vyjadrenia hornej hranice časovej zložitosti algoritmu.
  • Algoritmus s časovou zložitosťou O(n) znamená, že čas potrebný na spustenie algoritmu je priamo úmerný veľkosti vstupných údajov (n).
  • Ďalšie bežné časové zložitosti sú O(n^2) kvadratická zložitosť a O(log n) logaritmická zložitosť.

Analýza priestoru

  • Na druhej strane priestorová zložitosť sa týka množstva pamäte alebo úložného priestoru potrebného na vykonanie algoritmu.
  • Je to dôležité, pretože určuje počet prostriedkov potrebných na spustenie algoritmov, ktoré môžu ovplyvniť celkový výkon vašej aplikácie alebo systému.
  • Ak je priestorová zložitosť algoritmu O(n), používa množstvo pamäte, ktoré lineárne rastie s veľkosťou vstupu.
  • Ak má algoritmus priestorovú zložitosť O(1), používa pevné množstvo pamäte bez ohľadu na veľkosť vstupu.

Ako napísať algoritmus

1. Najprv definujte problém, ktorý má algoritmus vyriešiť.

Predpokladajme napríklad, že chceme napísať algoritmus na nájdenie maximálnej hodnoty zo zoznamu čísel.

2. Rozdeľte problém na menšie, zvládnuteľné kroky.

  • Inicializujte premennú 'max' na prvú hodnotu v zozname.
  • Pre každú nasledujúcu hodnotu v zozname porovnajte s hodnotou „max“.
  • Ak je hodnota väčšia ako 'max', nastavte 'max' na túto hodnotu.
  • Pokračujte v tom, kým sa neporovnajú všetky hodnoty v zozname.
  • Vráti konečnú hodnotu „max“.

3. Napíšte svoj algoritmus v pseudokóde alebo programovacom jazyku.

Algoritmus napísaný v pseudokóde:

 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. Otestujte svoj algoritmus, aby ste sa uistili, že je správny a efektívny.

Algoritmus môžete otestovať zadaním rôznych zoznamov čísel a overením, či vracia maximálnu správnu hodnotu. Môžete tiež analyzovať časovú zložitosť svojho algoritmu, aby ste určili, ako dobre sa prispôsobuje väčším vstupom.

Príklad:-

rekha vek

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

Výstup: 7.

Vysvetlenie: 7 je maximálna hodnota v zozname.

5. Optimalizujte algoritmus.

Hľadajte spôsoby, ako optimalizovať algoritmy, aby boli rýchlejšie a efektívnejšie. To môže zahŕňať úpravu pseudokódu alebo implementáciu efektívnejších dátových štruktúr alebo algoritmov.

Základné písanie algoritmov

Príklad: - Súčet dvoch celých čísel.

Krok 1 - Začať

Krok 2 - Deklarujte tri celé čísla a, b, c

Krok 3 - Definujte hodnoty a a b

Krok 4 - Pridajte hodnoty a a b

Krok 5 - Uložte výstup z kroku 4 v c

kedy začína q2

Krok 6 - Tlač c

Krok 7 - Prestaň

Typ algoritmov používaných v jazyku C.

1. Algoritmy triedenia

C poskytuje bohatú sadu dátových typov a operátorov, ktoré možno použiť na implementáciu rôznych triediacich algoritmov, ako je bublinové triedenie, vkladanie triedenia a rýchle triedenie.

Tieto algoritmy sú užitočné v mnohých aplikáciách, pretože sa dajú použiť na triedenie údajov rôznych veľkostí a typov.

Existujú rôzne algoritmy triedenia.

oni sú:-

(i) Bublinové triedenie: Nekomplikovaný triediaci algoritmus, ktorý opakovane porovnáva blízke komponenty a vypína ich, ak sú mimo prevádzky.

Algoritmus pre bublinové triedenie je:-

  1. Začnite s nezoradeným zoznamom prvkov.
  2. Porovnajte prvé dva prvky v zozname. Ak je prvý prvok väčší ako druhý, vymeňte ich.
  3. Prejdite na ďalšiu dvojicu prvkov a opakujte krok 2, kým sa nedosiahne koniec zoznamu.
  4. Pre každú položku v zozname zopakujte kroky 2 a 3 ešte raz. ktorá sa označuje ako priepustky.
  5. Opakujte kroky 2-4 pre celý zoznam. Ako budete opakovať prechody, prvky budú „bublať“ na svoju správnu pozíciu v zoradenom zozname.
  6. Po dokončení prechodu a bez vykonania výmeny sa zoznam zoradí a algoritmus sa môže zastaviť.
  7. Vráti sa konečný zoradený zoznam.

(ii) Druh vloženia : metóda triedenia, ktorá vytvára triedený zoznam po jednotlivých prvkoch umiestnením každého z nich na príslušné miesto.

Algoritmus na zoradenie vkladania je:-

  1. Inicializujte prázdny zoradený zoznam a nezoradený zoznam prvkov, ktoré sa majú zoradiť.
  2. Prvý člen z nezoradeného zoznamu by sa mal vziať a umiestniť na príslušné miesto v zoradenom zozname.
  3. Opakujte krok 2 pre každý nasledujúci prvok v nezoradenom zozname.
  4. Porovnajte aktuálny prvok s prvkami zoradeného zoznamu, počnúc prvkom hneď vľavo.
  5. Vymeňte dva prvky, ak je aktuálny prvok menší ako prvok naľavo od neho.
  6. Ak je aktuálny prvok väčší ako prvok naľavo, vložte ho na správnu pozíciu v zoradenom zozname.
  7. Opakujte kroky 4-6 pre každý nasledujúci prvok v nezoradenom zozname.
  8. Po spracovaní všetkých prvkov bude zoradený zoznam obsahovať všetky prvky v správnom poradí.
  9. Proces triedenia je dokončený.

(iii) Triedenie výberu : spôsob triedenia, ktorý dôsledne spúšťa triedený výpis s najmenším detailom z neusporiadaného výpisu.

Algoritmus na triedenie výberu je:

  1. Začnite nastavením primárneho prvku zoznamu ako prvku min.
  2. Opakujte cez zostávajúce položky v zozname a porovnajte každú z nich s aktuálnym minimom.
  3. Nastavte nové minimum, ak sa zistí, že prvok je menší ako ten existujúci.
  4. Zmeňte aktuálne minimum na prvý prvok zoznamu vždy, keď dosiahne svoj záver.
  5. Pre zostávajúcu nezoradenú časť zoznamu zopakujte kroky 2-4, ale začnite druhou položkou v zozname (keďže prvý prvok je už zoradený).
  6. Pokračujte v zoraďovaní zoznamu týmto spôsobom, kým nebude celý zoradený.

(iv) Rýchle triedenie : Algoritmus triedenia rozdeľuj a panuj, ktorý vyberá hlavný prvok a rozdeľuje zoznam na podzoznamy v závislosti od toho, či je prvkov menej alebo viac ako pivot. Potom sa podzoznamy opakovane triedia, kým sa nezoradí celý zoznam.

Algoritmus rýchleho triedenia je:

príklad java mapy
  1. Vyberte prvok pivot zo zoznamu. Toto je zvyčajne prvý prvok, ale môže to byť aj náhodný prvok alebo medián zoznamu.
  2. Rozdeľte zoznam na dva podzoznamy: jeden obsahuje prvky menšie ako pivot a druhý obsahuje prvky väčšie ako pivot.
  3. Pomocou rovnakého procesu rekurzívne zoraďte podzoznam obsahujúci prvky menšie ako pivot.
  4. Rovnaký postup použite na rekurzívne zoradenie podzoznamu položiek väčších ako pivot.
  5. Spojte zoradené podzoznamy s pivotovým prvkom medzi nimi, aby ste vytvorili úplne zoradený zoznam.
  6. Vrátiť úplne zoradený zoznam.

(v) Lot ide : Algoritmus triedenia rozdeľuj a panuj rozdelí zoznam na dve polovice, zoradí každú polovicu a potom tieto dve polovice zlúči v zoradenom poradí.

Algoritmus zlučovania:

  1. Zo zoznamu vytvorte dva podzoznamy: jeden s prvkami pod pivotom a druhý s prvkami nad pivotom.
  2. Vytvára nový triedený podzoznam iteratívnym zlučovaním podzoznamov, až kým nebude existovať iba jeden podzoznam. Toto bude váš zoradený zoznam.
  3. Kroky na zlúčenie dvoch podadresárov: -
  4. Vytvorte prázdny zoznam, v ktorom budú uložené zoradené prvky.
  5. Porovná prvý prvok každého podzoznamu.
  6. Pridá menší prvok do nového zoznamu a odstráni ho z nadradeného podzoznamu.
  7. Opakujte kroky 2 a 3, kým nebude zoznam úplne prázdny.
  8. Pridá zostávajúce prvky z iných podzoznamov do nového zoznamu.
  9. Nahradí zlúčený podzoznam novým zoradeným zoznamom.
  10. Tento postup opakujte, kým sa všetky podzoznamy nezlúčia do jedného zoradeného zoznamu.

(vi) Triedenie haldy : Algoritmus triedenia, ktorý triedi prvky pomocou dátovej štruktúry nazývanej halda.

Toto je klasifikačný algoritmus:

    Vytvorte maximálnu hromadu: Začnite prvým nelistovým uzlom, porovnajte každý uzol s jeho podriadenými uzlami a nahraďte uzly najväčším z jeho potomkov, aby sa splnila vlastnosť max haldy.Vymeňte koreň s posledným prvkom: Vymeňte koreň (najväčší prvok) s posledným prvkom v zásobníku.
  1. Naskladajte zvyšok prvkov. Počnúc od koreňa sa každý uzol porovnáva so svojimi deťmi, pričom sa vymieňajú uzly so svojimi staršími deťmi, kým nie je splnená vlastnosť max haldy.
  2. Opakujte kroky 2 a 3 s novo naskladanými prvkami, s výnimkou posledného prvku v správnej polohe.
  3. Tento postup opakujte, kým v stohu nezostane iba jeden prvok. Toto je teraz zoradené.
  4. Heapify Down: Počnúc koreňovým uzlom porovnáva prvky so svojimi potomkami a zamieňa s väčším z týchto dvoch, kým nie je splnená vlastnosť max haldy.Heapify Up: Začnite s posledným prvkom v halde, porovnajte ho s jeho rodičom a vymeňte ho s rodičom, aby ste splnili maximálnu vlastnosť haldy.

(vii) Radix sort : Algoritmus triedenia, ktorý triedi prvky na základe číslic alebo číslic ich binárnej reprezentácie.

Algoritmus pre radenie Radix je: -

  1. určiť, koľko číslic je obsiahnutých v najväčšom prvku vstupného výpisu.
  2. Inicializujte premennú, povedzme miesto číslice, na 1, ktorá predstavuje aktuálne miesto číslice.
  3. Vytvorte prázdny zoznam pre každú možnú číselnú hodnotu od 0 do 9.
  4. Iterujte cez zoznam vstupov a pridajte každý prvok do príslušného zoznamu na základe hodnoty aktuálneho miesta číslice.
  5. Zreťazením všetkých zoznamov vytvorte nový zoznam v poradí čísel.
  6. Vynásobením čísla digitPlace 10 sa presuniete na ďalšie miesto s číslicou.
  7. Opakujte kroky 4-6 pre každú číslicu, kým nezohľadníte všetky číslice najväčšieho prvku.
  8. Konečný zoznam bude zoradený vzostupne podľa číslic prvkov.
  9. Vráťte konečný zoradený zoznam.

2. Vyhľadávacie algoritmy

C tiež poskytuje nástroje potrebné na implementáciu rôznych vyhľadávacích algoritmov, ako je lineárne vyhľadávanie a binárne vyhľadávanie. Tieto algoritmy dokážu rýchlo nájsť konkrétne položky v súbore údajov, vďaka čomu sú užitočné pre širokú škálu aplikácií.

Existuje mnoho typov vyhľadávacích algoritmov.

Oni sú:-

(i) Lineárne vyhľadávanie : Základný vyhľadávací algoritmus, ktorý skúma každú položku v zozname jednu po druhej, kým nenájde požadovanú položku.

Algoritmus pre lineárne vyhľadávanie: -

  1. Definujte vstup pre algoritmus: Vstupom pre algoritmus lineárneho vyhľadávania je zoznam prvkov (alebo pole) a cieľový prvok, ktorý hľadáme.
  2. Inicializujte premennú s názvom „index“ na -1: Táto premenná sa použije na uloženie indexu cieľového prvku, ak sa nájde.
  3. Slučka cez zoznam prvkov: Začnite od prvého prvku a skontrolujte každý prvok v zozname jeden po druhom.
  4. Porovnajte prítomný prvok s požadovaným prvkom na vyhodnotenie: Ponechajte index aktuálneho prvku v premennej index a opustite cyklus, ak sú moderný prvok a prvok cieľa identické.
  5. Vráťte index cieľového prvku: Po dokončení cyklu vráťte hodnotu uloženú v premennej index. Ak sa cieľový prvok nenájde, hodnota indexu bude -1.

(ii) Binárne vyhľadávanie : Vyhľadávací algoritmus, ktorý funguje tak, že rozdelí záznam na polovice a vyhľadáva v rámci týchto polovíc, bude pravdepodobne zahŕňať prvok.

Algoritmus pre binárne vyhľadávanie: -

  1. Vstup: Zoradený zoznam n prvkov a cieľový prvok x.
  2. Inicializácia premenných: Nastavte nízky index na 0, vysoký index na n-1 a stredný na (nízky+vysoký)/2.
  3. Spustenie cyklu: Kým je nízky index menší alebo rovný vysokému indexu, zopakujte nasledujúce kroky.
  4. Porovnajte stredný prvok s x: Ak sa stredný prvok rovná x, vráťte stredový index.
  5. Aktualizujte nízky alebo vysoký index: Ak je x väčšie ako stredný prvok, nastavte nízky index na stred + 1. V opačnom prípade nastavte vysoký index na stred - 1.
  6. Aktualizujte stredný index: Stred = (nízky+vysoký)/2.
  7. Koniec cyklu: Ak je nízky index väčší ako vysoký index, potom x nie je v zozname a algoritmus vráti zlyhanie.
  8. Výstup: Index x v zozname alebo chybovej správe.

(iii) Hĺbkové vyhľadávanie : Algoritmus vyhľadávania, ktorý skúma každú vetvu tak ďaleko, ako je to možné, predtým, než sa obráti.

Pre hĺbkové vyhľadávanie platia nasledujúce pokyny:

  1. vyberte začiatočný vrchol alebo uzol grafu, s ktorým chcete začať.
  2. Pridajte návštevnú značku k prvému vrcholu.
  3. Začiatočný vrchol umiestnite priamo do stohu.
  4. Kým nie je zásobník prázdny, opakujte nasledujúce akcie: -
    • Odstráňte horný vrchol zásobníka.
    • Označte ako navštívené a vložte do zásobníka každého nenavštíveného suseda vyskočeného vrcholu.
  5. Pokračujte v tomto procese, kým neprejdete všetky vrcholy v grafe.
  6. Po navštívení všetkých vrcholov je algoritmus dokončený a v grafe sa vykoná hĺbkové vyhľadávanie.

(iv) Hľadanie do šírky : Algoritmus vyhľadávania, ktorý skúma všetkých susedov uzla pred prechodom na ďalšiu úroveň.

Algoritmus pre vyhľadávanie do šírky je:-

  1. Začnite s koreňovým uzlom alebo počiatočným stavom.
  2. Pridajte koreňový uzol do frontu.
  3. Skontrolujte, či je front prázdny; ak áno, ukončite algoritmus.
  4. Vezmite prvý prvok z frontu a označte ho ako navštívený.
  5. Zosilnite súčasný uzol pridaním všetkých jeho nenavštívených susedov do frontu.
  6. Kým nenájdete požadovaný uzol alebo kým nebude front prázdny, opakujte kroky 3 až 5.
  7. Vráťte cestu z predbežného stavu do cieľového stavu, ak sa nájde cieľový uzol.
  8. Ak je front prázdny, ukončite sadu pravidiel a nahláste, že stav cieľa nebol identifikovaný.

(v) Hľadanie interpolácie : Algoritmus vyhľadávania, ktorý používa hodnoty hľadaných prvkov na odhadnutie pozície v indexe.

Je dôležité, aby bolo pole rovnomerne rozložené. V opačnom prípade je to algoritmus.

Funguje podľa očakávania.

Algoritmus možno zhrnúť nasledovne.

  1. Získajte zoznam vstupov a kľúčovú hodnotu na vyhľadávanie.
  2. Inicializujte spodné a horné premenné na prvom a poslednom indexe zoznamu.
  3. Ak je nižšia hodnota menšia alebo rovná vyššej hodnote, potom: -
    1. Vypočítajte odhadovanú polohu pomocou nasledujúceho vzorca:
      pos = nízka + ((vysoká - nízka) / (arr[vysoká] - arr[nízka])) * (x - arr[nízka]).
    2. Vráťte pozíciu, ak je odhadovaná hodnota pozície kľúčovou hodnotou.
    3. c) Ak je odhadovaná hodnota pozície nižšia ako kľúčová hodnota, nastavte ju nižšie.
      Pozícia + 1.
    4. d) Ak je hodnota odhadovanej pozície väčšia ako hodnota kľúča Set, pozícia - 1 hore.
  4. Ak sa hodnota kľúča nenájde, vráťte hodnotu -1 na označenie, že hodnota nie je v zozname.

(vi) Skokové vyhľadávanie : Metóda vyhľadávania, ktorá iteruje zoznam v krokoch s konštantnou dĺžkou, kým nenájde príslušný prvok alebo nezistí, že už nie je prítomný.

Algoritmus vyhľadávania skokov je nasledujúci:

  1. Najprv nastavte veľkosť skoku na druhú odmocninu počtu prvkov poľa.
  2. Nastaví premennú s názvom 'current' na prvý prvok poľa.
  3. Iteruje cez pole skokom podľa veľkosti skoku a zároveň zvyšuje premennú nazývanú „skok“.
  4. Ak je existujúci prvok menší ako požadovaný prvok, prejdite na nasledujúci skok.
  5. Ak je aktuálny prvok väčší ako cieľový prvok, vykonajte lineárne vyhľadávanie medzi aktuálnym prvkom a predchádzajúcim prvkom skoku, aby ste našli cieľový prvok.
  6. Ak sa cieľový prvok v poli nenájde, vráti hodnotu -1, čo znamená, že sa v poli nenachádza.
  7. Ak sa prvok nájde, vráti index prvku v poli.

3. Grafové algoritmy

Podpora C pre ukazovatele a dátové štruktúry, ako sú polia a prepojené zoznamy, ho robí vhodným na implementáciu algoritmov, ktoré manipulujú s grafmi, ako je hľadanie najkratšej cesty medzi dvoma uzlami v grafe.

Existujú rôzne typy grafových algoritmov.

oni sú:-

náhodné číslo c kód
    Dijkstrov algoritmus: Algoritmus, ktorý nájde najkratšiu cestu medzi dvoma uzlami v grafe nepretržitou aktualizáciou najkratšej vzdialenosti od každého uzla.Algoritmus A*: Metóda, ktorá neustále aktualizuje najkratší kurz pre každý uzol v grafe, aby sa medzi nimi určila najkratšia cesta.Primov algoritmus: Prístup na zistenie najmenšieho kostry váženého spojeného grafu.Kruskalov algoritmus: Prístup na identifikáciu najnižšieho kostry prepojeného váženého grafu.Bellman-Fordov algoritmus: Algoritmus, ktorý aj keď má graf záporné váhy hrán, zobrazuje najkratšiu cestu medzi konkrétnym napájacím uzlom a každým ďalším uzlom v sieti.

4. Kryptografické algoritmy

C podporuje operácie na nízkej úrovni a efektívnu manipuláciu s údajmi, vďaka čomu je ideálny na implementáciu algoritmov používaných v kryptografii, ako sú šifrovacie a dešifrovacie algoritmy.

Existujú rôzne typy šifrovacích algoritmov.

Oni sú:-

    Hash algoritmy: Tieto algoritmy vytvárajú výstupy s pevnou veľkosťou (hash) zo vstupov ľubovoľnej veľkosti. Príklady zahŕňajú MD5, SHA-1 a SHA-2.Algoritmy symetrického kľúča: Kroky šifrovania a dešifrovania v takýchto algoritmoch využívajú rovnaký súkromný kľúč. AES, DES a Blowfish sú niekoľko príkladov.Algoritmy asymetrického kľúča: Verejný kľúč a neverejný kľúč sa týmito metódami používajú ako samostatné kľúče na šifrovanie a dešifrovanie. Niektoré príklady zahŕňajú RSA, ECC a DSA.Algoritmy výmeny kľúčov: Tieto algoritmy umožňujú dvom stranám bezpečne si vymieňať kľúče cez nezabezpečený kanál. Spomenúť môžeme napríklad Diffie-Hellman a Elliptic Curve Diffie-Hellman.

Výhody algoritmu

Algoritmy majú veľa výhod.

oni sú:-

    Rýchlosť a efektivita: Algoritmy dokážu spracovať veľké množstvo údajov rýchlo a presne, vďaka čomu sú užitočné pri úlohách, ktoré sú príliš časovo náročné alebo náchylné na chyby, aby ich ľudia mohli vykonávať.Dôslednosť: Algoritmy sa riadia súborom vopred určených pokynov. Môže produkovať konzistentné výsledky bez toho, aby bol ovplyvnený osobnými predsudkami a emóciami.automatizácia: Algoritmy môžu vykonávať úlohy automaticky, čo ľuďom umožňuje sústrediť sa na zložitejšie alebo kreatívnejšie úlohy.Zvýšená presnosť: Algoritmy môžu často dosiahnuť vyššiu úroveň presnosti ako ľudia, najmä pri práci s veľkým množstvom údajov.Lepšie rozhodovanie: Algoritmy nám pomáhajú robiť informovanejšie a objektívnejšie rozhodnutia tým, že analyzujú údaje a identifikujú vzory a trendy, ktoré nie sú pre ľudí ľahko viditeľné.Škálovateľnosť: Algoritmy možno jednoducho zmenšiť alebo zvýšiť, aby vyhovovali meniacim sa požiadavkám a pracovnému zaťaženiu.

Nevýhody algoritmu

Algoritmy sú veľmi užitočné pre programovanie, ale algoritmy majú nevýhody.

oni sú:-

    Obmedzený rozsah: Algoritmy môžu riešiť problémy len v rámci svojho rozsahu a nemusia byť schopné riešiť zložité alebo abstraktné problémy.Zaujatosť: Algoritmy môžu udržiavať a posilňovať zaujatosti v údajoch používaných na školenie, čo vedie k nespravodlivým výsledkom.Nedostatočná transparentnosť: Mnohé algoritmy zakrývajú proces, prostredníctvom ktorého dospievajú k svojim záverom. To môže sťažiť premýšľanie alebo kontrolu výsledkov.Spoliehanie sa na presnosť údajov:Správnosť súboru pravidiel vo veľkej miere závisí od jemnosti a použiteľnosti údajov použitých vo výučbe. Nepresné alebo nepresné efekty môžu byť výsledkom chybných údajov.obmedzená prispôsobivosť:Algoritmy sú navrhnuté tak, aby dodržiavali pokyny a neprispôsobili sa meniacim sa okolnostiam a podmienkam.