Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инф.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
78.06 Кб
Скачать

Algoritmy

  • Od perského matematika a astronoma Chórezmího- autor díla, které seznámilo Evropu s indickou poziční soustavou výpočtu a číslem 0.

  • Algoritmus v obecném pojetí označuje návod pro postup k nějaké činnosti

Algoritmy V matematice

  • Pojem algoritmus je v matematice chápán intuitivně a není pro něj definice

  • Z matematického hlediska je to návod, který má tyto vlastnosti:

    • Je složen z konečného počtu přesně definovaných instrukcí, zapsaných konečným počtem symbolů

    • Řeší většinou problémy v závislosti na vstupních podmínkách (datech)

    • Může být prováděn i člověkem

    • Není třeba lidské inteligence, pouze k pochopení instrukcí

  • Alan Turing- definoval matematický model algoritmu- „Turingův stoj“-> pro každý algoritmus, chápaný intuitivně, existuje ekvivalentní Turingův stroj a obráceně

  • Dnešní Teorie algoritmů-> Teorie algoritmů a Teorie vyčíslitelnosti

    • 3 základní otázky: Co všechno lze pomocí algoritmu vyřešit; jak složitý musí být algoritmus pro vyřešení daného problému; je algoritmus závislý na způsobu zápisu

Kategorie problémů

  1. Algoritmicky rozhodnutelné- spočetné, rekurzivní

      • Výsledek bez ohledu na počáteční podmínky (vstup)

      • Praktické problémy

  1. Algoritmy částečně rozhodnutelné- rekurzivně spočetné, vyčíslitelné

      • Algoritmus existuje, ale skončí a vydá výsledek jen někdy-> nemáme jistotu, zda skončí

      • Schopnost rozhodnout, zda jiný algoritmus za daných podmínek skončí nebo ne (halting problem)

  1. Algoritmicky nerozhodnutelné- nerekurzivní, nespočetné

      • Nejsou algoritmicky rozhodnutelné

      • Např. problém rozhodnout, zda dva algoritmy dělají totéž

      • Problémy z oblasti společenských věd- ekonomie, psychologie, sociologie...

Složitost algoritmů

  • Závisí na množství času a prostředků (např. paměti) které algoritmus ke svému provedení potřebuje

  1. Polynomiální složitosti- množství času a prostředků lze v závislosti na vstupních podmínkách vyjádřit polynomem

  2. Ne-polynomiální složitosti-nelze v záv. na vstupních podmínkách vyjádřit polynomem

Závislost na formě zápisu

  • To, co lze zapsat jednou formou, lze ekvivalentně vyjádřit jinou formou=> forma zápisu nemá vliv na vlastnosti algoritmu=> je jedno, jaký programovací jazyk pro zápis zvolíme

Ne-polynomiální úlohy

  • Problém batohu- daná množina předmětu předem definované velikosti a batoh-> jak vybrat předměty aby se tam vešly a zároveň měly maximálně možný objem

    • Nepolynomiální problém-> s množství předmětu roste složitost řešení minimálně exponenciálně=> velmi složité

    • Lze u předem připraveného seznamu posoudit, zda se tam vejde nebo ne

    • Lze porovnat dva seznam a zjistit, který je výhodnější

  • Problém dělení lupu- jak rozdělit lup napůl, když každý předmět je nedělitelný-> je jednodušší posuzovat navržené řešení, než ho tvořit (postup, který by problém řešil a navrhl řešení, popř. zjistil, že neexistuje není polynomiální)

  • Je jednoduší a rychlejší ověřit, zda je navržené řešení opravdu řešením problému, než řešení nalézt-> stejné jako zkoušející x zkoušený

  • Nepolynomiální algoritmy se využívají především pro šifrování (certifikát pro elektronickou komunikaci s bankou, tvorba elektrických podpisů)