Který druh je nejrychlejší? Testovací algoritmy. Vrstva správy virtuální paměti nezávislá na hardwaru

Nejlepší algoritmus nahrazení stránky je snadné popsat, ale je zcela nemožné jej implementovat. V něm se vše děje následovně. V době, kdy dojde k chybě stránky, je v paměti specifická sada stránek. Některé z těchto stránek budou přístupné doslova z následujících příkazů (tyto příkazy jsou obsaženy na stránce). Jiné stránky nemusí být přístupné po 10, 100 nebo možná dokonce 1000 příkazech. Každá stránka může být označena řadou příkazů, které je nutné provést před prvním přístupem na stránku.

Optimální algoritmus nahrazení stránky uvádí, že stránka s nejvyšší hodnotou příznaku by měla být odstraněna. Pokud se stránka nepoužívá pro 8 milionů příkazů a jiná stránka není použita pro 6 milionů příkazů, pak odstranění první stránky povede k chybě při opuštění stránky, v důsledku čehož bude znovu načtena z disku v nejvzdálenější budoucnost. Počítače se stejně jako lidé snaží nepříjemné události co nejvíce oddálit.

Jediným problémem takového algoritmu je nemožnost jeho implementace. V době, kdy dojde k chybě stránky, nemá operační systém žádný způsob, jak zjistit, kdy bude každá ze stránek další požadována. (Taková situace byla pozorována již dříve, když jsme uvažovali o plánovacím algoritmu, který jako první vybere nejkratší úlohu – jak může systém určit, která z úloh je nejkratší?) Při spuštění programu na simulátoru a sledování všech přístupů ke stránce však je možné realizovat optimální algoritmus nahrazení stránky při druhém spuštění pomocí informací o přístupu ke stránce shromážděných během prvního spuštění.

Je tak možné porovnat výkon proveditelných algoritmů s nejlepším možným. Pokud operační systém dosáhne výkonu, který je řekněme o 1 % horší než u optimálního algoritmu, pak úsilí vynaložené na nalezení lepšího algoritmu nepřinese více než 1 % zlepšení.

Aby se předešlo možným nejasnostem, mělo by být jasné, že toto protokolování přístupu ke stránce se vztahuje pouze na jeden program, který byl vyhodnocen, a pouze na jednu dobře definovanou sadu vstupů. Výsledný algoritmus nahrazení stránky se tedy vztahuje pouze na tento konkrétní program a na tento konkrétní vstup. Ačkoli se tato metoda používá k vyhodnocení algoritmů nahrazování stránek, v reálných systémech je nepoužitelná. Dále se podíváme na ty algoritmy, které jsou skutečně užitečné pro skutečné systémy.

Při pohovorech se lidé často ptají, který druh je nejrychlejší. Chyták. Vysvětlíme proč a hledáme nejlepší možnost.

V odpovědi byste se měli zeptat: "A pro jaký případ je zvolen časově optimální druh?" A teprve když jsou vyhlášeny podmínky, můžete bezpečně roztřídit dostupné možnosti.

Existovat:

  • třídicí algoritmy O(n2) jako řazení vložení, řazení podle bublin a řazení výběru, které se používají ve speciálních případech;
  • quicksort (univerzální): průměr O(n log n) výměny, ale nejhorší doba je O(n2) pokud je pole již seřazeno nebo jsou prvky stejné;
  • algoritmy Ó(nlogn), jako je merge sort a heap sort (heap sort), což jsou také dobré obecné třídicí algoritmy;
  • Na) nebo lineární třídicí algoritmy (select, select-swap, select-count) pro seznamy celých čísel, které mohou být vhodné v závislosti na povaze celých čísel ve vašich seznamech.

Pokud vše, co znáte, je obecný vztah pořadí mezi prvky, pak budou optimální algoritmy složité O(n log n). Lineární algoritmy vyžadují další informace o struktuře prvků.

Optimálnost algoritmu silně závisí na typu seznamů/polí, které budete třídit, a dokonce i na počítačovém modelu. Čím více informací budete mít, tím přesnější bude váš výběr. Za velmi slabých předpokladů o faktorech může být optimální složitost nejhoršího případu Na!).

Tato odpověď je pouze o složitosti. Skutečná doba provádění algoritmů závisí na velkém množství faktorů.

Testování

Jaký druh je tedy nejrychlejší?

Vizualizace

Dobrá vizualizace třídění je demonstrována v tomto videu:

Zdá se, že odpovídá na otázku, který druh je nejrychlejší, ale mějte na paměti, že rychlost je ovlivněna mnoha faktory a toto je pouze jedna z demonstrovaných možností.

FEDERÁLNÍ AGENTURA PRO VZDĚLÁVÁNÍ

Státní vzdělávací instituce vyššího odborného vzdělávání "Voroněžská státní technická univerzita"

Fakulta radiotechnická

Ústav radiotechniky

Specialita 210302 "Radio Engineering"

Optimalizace vyhledávacích algoritmů

Účinkuje student gr. RT-041 D.S. Chetkin

Kontrolováno docentem katedry V.P. Litviněnko

Úvod. 4

1. Vývoj optimálního dichotomického vyhledávacího algoritmu pro ekvipravděpodobné rozdělení pravděpodobnosti a počet událostí M=16. 5

2. Vývoj optimálního vyhledávacího algoritmu pro zákon exponenciálního rozdělení pravděpodobnosti pro M=16. 7

3. Vývoj optimálního algoritmu pro nalezení zákona exponenciálního rozdělení pro počet měření od N=15 do N=log2M.. 9

4. Vývoj optimálního vyhledávacího algoritmu pro 9. možnost rozdělení s počtem měření od N=1 do 15. 12

Závěr. 19

Reference.. 20

Úvod

Stealth charakterizuje náklady (čas, peníze) nutné k identifikaci opakované události s danou spolehlivostí (pravděpodobnost správného rozhodnutí, pravděpodobnost spolehlivosti).

Při vytváření odhadu utajení náhodné události byl jako referenční přijat dvoualternativní postup vyhledávání krok za krokem, jehož podstata je následující.

Množina X s odpovídajícím zákonem rozdělení pravděpodobnosti je rozdělena na dvě podmnožiny a (horní index je číslo oddílu). Binární měřič provádí binární měření a odhaluje, ve které podmnožině se nachází opakovaná událost (její stopa). Poté je podmnožina, ve které je detekována opakovaná událost (na obr. 2.1. je ), opět rozdělena na dvě podmnožiny a v jedné z nich je odhalena stopa opětovné události. Procedura končí, když je ve vybrané podmnožině jedna událost. Vyhledávání může být sekvenční a dichotomické. V prvním algoritmu () se provádí sekvenční výčet stavů od prvního do posledního, dokud nedojde k opětovné události.

Druhý vyhledávací algoritmus () zahrnuje rozdělení celé množiny stavů na polovinu, kontrolu přítomnosti opětovné události v každé z těchto částí, pak rozdělení vybrané poloviny množiny X na dvě stejné části s kontrolou přítomnosti opakovaná událost v nich a tak dále. Vyhledávání končí, když se ve vybrané podmnožině objeví jedna událost.

Existuje několik způsobů, jak minimalizovat procedury binárního vyhledávání. Příkladem jsou metody Zimmerman-Huffman a Shannon-Fono. Algoritmus lze optimalizovat podle různých parametrů s přihlédnutím k nákladům na měření i bez. V této laboratorní práci jsme zkoumali optimalizaci algoritmu dichotomického vyhledávání pomocí nejmenší hodnoty průměrného stealth.

1. Vývoj optimálního dichotomického vyhledávacího algoritmu pro ekvipravděpodobné rozdělení pravděpodobnosti a počet událostí M=16

Zapněte režim dichotomického vyhledávání. Nastavte počet událostí pro rovnoměrné rozdělení pravděpodobnosti a nastavte počet měření. Vyvinout optimální vyhledávací algoritmus, nastavit jej na sázecí pole, provést simulaci, určit potenciální utajení.

V tomto případě je nejoptimálnějším vyhledávacím algoritmem algoritmus vyvinutý podle Shannon-Fano principu. Tato metoda předpokládá, že výchozí množina prvků s daným rozložením se rozdělí na dvě podmnožiny s čísly 0 a 1 tak, aby se pravděpodobnosti dostat se do nich co nejvíce blížily (ideálně poloviční). Poté se každá ze získaných podmnožin samostatně rozdělí na dvě podmnožiny se stejnou podmínkou a čísly od 00,01,10,11. Oddíl končí, když všechny prvky podmnožiny mají každý pouze jeden prvek.

V důsledku toho byl vyvinut optimální vyhledávací algoritmus pro zákon ekvipravděpodobného rozdělení pravděpodobnosti.

Vypočítejme potenciální utajení pro ekvipravděpodobný zákon rozdělení pravděpodobnosti:

(1)

Výsledek pro tento případ:

Výsledkem je jednoduchý výraz pro určení potenciálního utajení zákona o rovnoměrném rozdělení, který u dichotomického vyhledávacího algoritmu nezávisí na výčtu kombinace měření, ale pouze na typu vyhledávacího stromu.

Vývoj optimálního vyhledávacího algoritmu pro zákon exponenciálního rozdělení pravděpodobnosti pro M=16

Zvolte exponenciální rozdělení pravděpodobnosti událostí ve tvaru , , - normalizační faktor, se stejným jako v odstavci 1. Určete optimální vyhledávací algoritmus, nastavte jej na pole sazby, proveďte simulaci, určete potenciální utajení.

Zpočátku ponecháme vyhledávací strom stejný jako v předchozím odstavci. "PrintScreen" programu "Poisk" pro tento případ pro zákon exponenciálního rozdělení.

Při pohledu na průběh křivky odstranění nejistoty docházíme k závěru, že její průběh není optimální. Pomocí známých vyhledávacích optimalizačních algoritmů dojdeme k závěru, že v tomto případě není optimálním vyhledávacím algoritmem vůbec dichotomický algoritmus pro libovolnou kombinaci hledání opakované události, ale sekvenční. Pro tento případ je to optimální, protože nejpravděpodobnější se kontroluje prvním měřením, pak dalším a tak dále, dokud nedojde k nejistotě rozhodnutí.

Důkaz použití sekvenčního vyhledávacího algoritmu. K tomu se používá Zimmermann-Huffmanova metoda. Tato optimalizační metoda se skládá ze dvou fází: „Obstarávání operací“ a „Čtení“. Více podrobností o tom je uvedeno v knize.

Protože exponent je větší než 1, a to splňuje nerovnost:

Kde λ je exponent rozdělení pravděpodobnosti rovný 1, pak je pro tento případ optimální sekvenční vyhledávací algoritmus.

V důsledku tohoto odstavce se ukazuje, že sekvenční vyhledávací algoritmus je optimální. Porovnáním výsledků těchto dvou bodů dospějte k závěru, že pro každý zákon rozdělení pravděpodobnosti existuje vlastní optimální vyhledávací algoritmus, buď sekvenční, dichotomický, nebo kombinovaný vyhledávací algoritmus.

Vývoj optimálního algoritmu pro nalezení exponenciálního distribučního zákona pro počet měření od N=15 do N=log2M

Pro exponenciální rozdělení pravděpodobnosti od bodu 2, postupné snižování maximálního počtu měření z na , vyvinout optimální vyhledávací algoritmy a na základě výsledků simulace určit odpovídající hodnoty průměrného počtu měření.

S N=15 z předchozího odstavce je sekvenční vyhledávací algoritmus optimální a hodnota průměrné hodnoty binárních měření se pro něj určuje stejným způsobem jako pro potenciální stealth. Hodnota Rcp je uvedena v tabulce 1.

Tabulka 1 - Závislost průměrného počtu měření

na počtu měření s optimálními vyhledávacími algoritmy

Vypočítejme potenciální utajení pro každý případ podle vzorce 1:

S počtem měření rovným 3 není možné vyvinout vyhledávací algoritmus, protože nesplňuje podmínku proveditelnosti vyhledávání, konkrétně:

V důsledku toho byl sestaven graf závislosti průměrného počtu měření na počtu měření uvedených na obrázku 8. Obr.

Obrázek 8 - Závislost průměrného počtu měření na počtu měření pro exponenciální zákon rozdělení pravděpodobnosti

4. Vývoj optimálního vyhledávacího algoritmu pro 9. možnost rozdělení s počtem měření od N=1 do 15

Pro vaši verzi rozdělení pravděpodobnosti pro počet událostí vypracujte optimální vyhledávací algoritmus, sestavte vyhledávací strom, vysvětlete jeho tvar, čím je způsoben?

V poli sazby zadejte optimální algoritmus úplného vyhledávání. Postupně s vyloučením posledních měření (až ) zvažte závislost průměrného počtu měření, pravděpodobnosti neúplného řešení a zbytkového utajení na délce vyhledávání. Výsledky jsou uvedeny v tabulce 2.

Tabulka 2 - Závislost průměrného počtu měření,

zbytkové utajení, pravděpodobnost nejistoty z počtu měření

n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
R 4 3.775 4.325 4.725 5.1625 5.375 5.5 5.65 5.7 5.7625 5.8 5.8
Pneop 0.55 0.7625 0.875 0 0 0 0 0 0 0 0 0 0 0 0
Sost 0.801 0.785 0.791 0.802 0.814 0.826 0.837 0.848 0.858 0.868 0.877 0.885 0.893 0.901

V této tabulce byl Sres vypočten na hladině spolehlivosti 0,9. Program "PrintScreen" "Poisk" pro různé hodnoty počtu měření je znázorněn na obrázcích 8-11.

Když je počet měření menší než 4, objeví se pravděpodobnost neúplného řešení, protože není možné zkontrolovat všechny události. V důsledku toho není nutné kontrolovat vše, nejlepší možností by bylo zkontrolovat nejpravděpodobnější události. "PrintScreen" programu "Poisk" s počtem měření menším než 3 je znázorněn na obrázku 12.

Sestavme graf závislosti potenciálního utajení na počtu měření, který je znázorněn na obrázku 13.

Obrázek 13 - Závislost průměrného počtu měření na počtu měření pro 9. zákon rozdělení pravděpodobnosti

Obrázek 14 - Závislost pravděpodobnosti neúplného řešení na počtu měření pro 9. zákon rozdělení pravděpodobnosti

(3)

(4)

Pravděpodobnost spolehlivosti změníme v rozmezí 0,7÷0,9. Jako výsledek byl získán graf závislosti zbytkového stealth na počtu měření, který je znázorněn na obrázku 15.

Nost(Pdov) Pdov=0,9

Obrázek 15 – Zbytková stealth závislost na hodnotách úrovně spolehlivosti 0,7÷0,9

Z výše uvedeného grafu můžeme usoudit, že Pdow by měl být zvolen blízko jednoty, což povede ke snížení zbytkového stealth, ale to není vždy možné.

Obrázek 16 - Závislost zbytkového utajení pro hodnoty počtu měření 4,8,16

Z tohoto grafu vyplývá, že při velkém počtu měření je zbytková stealth vyšší, i když logicky větší počet měření povede ke snížení pravděpodobnosti nejistoty rozhodování.

Závěr

V této práci byly provedeny studie k optimalizaci algoritmu dichotomického vyhledávání pomocí programu Poick. Je provedeno srovnání se sekvenčním algoritmem. Typ SSN je studován pro rovnoměrné, exponenciální a variantně specifikované rozložení událostí. Rozvinuté dovednosti v ovládání programu Poick.

V průběhu laboratorních prací byl proveden vývoj optimálních vyhledávacích algoritmů pro sekvenční a dichotomické vyhledávací algoritmy.

Byl proveden výpočet křivky odstranění nejistoty a bylo zjištěno, že v některých případech je správnější použít sekvenční vyhledávací algoritmus a v jiných dichotomický. To ale může souviset pouze s původním rozdělením pravděpodobnosti.

Správná činnost programu Poisk byla potvrzena pomocí výpočtů provedených v softwarovém balíku Matcard 2001.

Bibliografie

1. Základy teorie stealth: učebnice pro studenty specializace 200700 "Radio Engineering" prezenční vzdělávání / Voroněžská státní technická univerzita; Sestavil Z.M. Kanevsky, V.P. Litviněnko, G.V. Makarov, D.A. Maksimov; upravil Z.M. Kanevského. Voroněž, 2006. 202s.

2. Pokyny pro laboratorní práci „Výzkum vyhledávacích algoritmů“ v oboru „Základy teorie utajení“ pro studenty specializace 200700 „Radiotechnika“ prezenční výuka7 / Voroněžská státní technická univerzita; comp.Z.M. Kanevsky, V.P. Litviněnko. Voroněž, 2007,54 s.

3. VTP VSTU 005-2007. Design kurzu. Organizace, postup, návrh vyúčtování a vysvětlivky a grafická část.

Odhadování složitosti algoritmů

6. Optimalizace algoritmů

Informatika zatím nenashromáždila dostatek informací, aby bylo možné problém minimalizace položit s jistotou obvyklou pro matematiku. Tomu brání několik faktorů.

Za prvé, je obtížné formulovat optimalizační kritérium, které by mělo jak nepopiratelný praktický význam, tak jednoznačně matematicky definované. Například, jeden může nastavit úkol minimalizovat množství instrukcí Turingova stroje, kritérium dobře definované matematicky; ale jeho praktický význam není vůbec jasný, protože je nepravděpodobné, že by skutečný program na skutečném počítači simuloval Turingův stroj. Za úkol lze stanovit minimalizaci doby provádění programu na reálném stroji – kritérium, které je z praktického hlediska jasné. Problém optimalizace však nebude možné vyřešit matematickými metodami, protože doba provádění závisí (někdy výrazně) na architektuře počítače a architekturu moderních počítačů nelze popsat malým počtem parametrů. Je také důležité, že program, který běží rychleji než ostatní na jednom počítači, nemusí být nejrychlejší na jiném. Existují dokonce speciální programy zvané „benchmark“ určené k hodnocení architektur.

Za druhé, není zcela jasné, jaká je složitost úkolu. Dalo by se definovat jako minimální složitost algoritmů, které řeší tento problém. Existuje ale algoritmus s minimální složitostí (jak zajistit, aby nalezený algoritmus byl skutečně minimální nebo naopak minimální)? Je o co usilovat? A jak náročné je hledání tohoto minima? Tyto otázky souvisejí se spodní hranicí složitosti algoritmů (a nikoli horní hranicí, jako v předchozích krocích) (5, str. 89-92).

Je možné pro uvažovaný problém dokázat, že žádný algoritmus, který jej neřeší, nemůže být jednodušší než tato dolní mez? Vezměte si známý problém násobení čtvercové matice. Je dán algoritmus složitosti Т(n) = 3n3 + n2. (8, s. 199-203) Toto pravděpodobně není nejlepší algoritmus, ale jaký je nižší odhad? Výsledná matice má n2 prvků. Pro výpočet libovolného prvku je potřeba alespoň jedna operace jednoprocesorového stroje - dva prvky nelze najít v jedné operaci. Pro minimální algoritmus získáme nerovnosti n2<= T, min(n) <= 3n3+n2 . Вряд ли n2 - хорошая нижняя оценка, но уже известно, что n3 нижней оценкой не является, так как найдены более быстрые алгоритмы (в частности, алгоритм Штрассена). (8, стр. 211)

Optimalizace programu má několik nezávislých aspektů, z nichž vyzdvihneme dva:

Optimalizace spojená s volbou metody konstrukce algoritmu;

Optimalizace spojená s volbou metod prezentace dat v programu.

První typ optimalizace je globální povahy a vede ke snížení řádu funkce složitosti - například nahrazení algoritmu s T(V) = O(FS) algoritmem s T(V) = O(V4 ). Záleží na tom, jak je úkol rozdělen na dílčí úkoly, zda je toto rozdělení vlastní úkolu samotnému, nebo jde jen o umělé zařízení. Obecným vodítkem zde může být sled akcí, opak analýzy algoritmů. Při analýze podle rekurzivního algoritmu se sestaví rovnice, která se následně řeší. Při optimalizaci je řetězec implementován:

Vzorec určující požadovanou obtížnost ->

Odpovídající rovnice (jedna z možných) ->

Způsob rozdělení úkolu na dílčí úkoly.

Druhý typ optimalizace beze změny struktury programu jako celku vede k úspoře paměti a/nebo zjednodušení práce s datovými strukturami, zvýšení efektivity pomocných procedur, které poskytují „rozhraní“ mezi aplikační úrovní (na které jsme uvažovat v podmínkách objektů na vysoké úrovni – grafy, matice, texty atd.) a na úrovni stroje, která podporuje nejjednodušší datové typy (čísla, symboly, ukazatele). Výsledkem toho je obvykle pokles koeficientů u některých členů ve funkci složitosti (při úspěšné optimalizaci - u nejvýznamnějšího členu), ale pořadí funkce složitosti zůstává stejné. (7, str. 204)

Oba typy optimalizace se vzájemně doplňují a lze je používat společně.

Algoritmy pro řešení výběrových problémů. Algoritmus žíhání

Abyste pochopili, co je optimalizace, musíte zjistit, k čemu slouží, a pochopit, že v životě se s optimalizacemi setkáváme denně, často aniž bychom si toho všimli. Předpokládejme, že po obdržení dalšího platu se rozhodneme rozdělit náš rozpočet ...

Analýza a syntéza založená na komplexu technických prostředků hypotetického mikroprocesorového systému pro optimální řízení technologického procesu a zařízení parogenerátoru technického objektu v podmínkách stochastické nejistoty

Jedním z klíčových problémů při návrhu systémů řízení procesů je problém optimalizace, na jejímž rozumné formulaci a úspěšném řešení do značné míry závisí účinnost systémů řízení procesů...

Počítačové modelování bezdrátových AD-HOC sítí pro účely výpočtu komunikační doby mobilních účastníků

Optimalizace je proces změny programu podle určitých kritérií s cílem zlepšit jeho kvalitu při zachování smyslu původního programu. Aby se snížilo množství programového kódu, je rozdělen na části - podprogramy ...

Modelování a optimalizace komunikací

Uveďme následující označení: Xi - zbytkové fondy na začátku i-té etapy; Uj - množství finančních prostředků, které bylo rozhodnuto přidělit i - podniku; Pi je zisk obdržený tímto podnikem ...

Modelování automatického řídicího systému softwarovou a simulační metodou

Optimalizace je realizována metodou sekvenčního simplexního plánování (simplexní metoda). Režim optimalizace zahrnuje následující dva dílčí režimy: nastavení počátečních podmínek a hranic optimalizace; optimalizace běhu...

Optimalizace plánu výroby a dodávek pomocí plánovacího systému IBM ILOG Plant PowerOps

IBM ILOG Plant PowerOps se skládá ze čtyř modulů: plánování výroby, dimenzování šarží, podrobné plánování a sledování poptávky. Každý z modulů řeší specifické úlohy v procesu optimalizace...

Vlastnosti práce v softwarovém balíku MicroCAP-7

Parametrická optimalizace je prováděna v programu MC7 metodou Powell v libovolném z typů analýzy: analýza přechodových jevů, analýza střídavého proudu malého signálu a výpočet stejnosměrných charakteristik ...

Funkce vytváření textového obsahu pro stránky UNN N.I. Lobačevského

Takže stránka už existuje. Je uživatelsky přívětivý, má vynikající design a má všechny spotřebitelské vlastnosti, které si dnes lze představit. Ale z nějakého důvodu čísla návštěvnosti připomínají ručičky zastavených hodin...

Návrh a modelování elektrických obvodů v grafickém systému AutoCAD a softwarovém balíku OrCAD 9.2

kinematický magnetofon elektrického obvodu Dále do obvodu přidáme optimalizační parametry nastavením aktuální hodnoty "Current Value", počáteční hodnoty "Initial Value" součástek a také tolerance "Tolerance"...

Vývoj návrhu dvojitého počítačového stolu

Kromě možnosti 3D navrhování produktů, vytváření výkresů a specifikací dílů a také výpočtu materiálů nezbytných pro výrobu produktu vám „bCAD Furniture Maker“ umožňuje vyrábět ekonomické...

Vývoj modelu realitní kanceláře dle standardu IDEF0

Tento model patří k typu „být“, to znamená, že model je postaven podle principu „jak má být“. V procesu vytváření modelu jsem opravil některé nedostatky ...

Vývoj aplikace pro výběr nákupu dvojice strojů

Jednorozměrné úlohy minimalizace jsou nejjednodušší matematický optimalizační model, ve kterém účelová funkce závisí na jedné proměnné a přípustnou množinou je segment reálné osy...

Vývoj programu "Stanovení optimálního období pro výměnu zařízení"

Jedním z důležitých ekonomických problémů, kterým musí člověk v praxi čelit, je stanovení optimální strategie náhrady starých strojů, průmyslových objektů, agregátů, strojů atd., jinými slovy...

Systémová analýza informačního systému personálního řízení v podniku

Vytvoření virtuální 3D prohlídky ze série virtuálních fotografických panoramat

Pro dokonalé sešívání panoramat, tedy šití bez viditelných "švů", by vzdálenost mezi dvojicemi kontrolních bodů měla být minimální. Proces optimalizace počítá...

Dolní mez složitosti třídy algoritmů není jednoznačně definována. Například, F(n) = 0 je vždy dolní mez, stejně jako jakákoli záporná funkce. Čím větší je nalezená spodní hranice, tím je netriviálnější a hodnotnější. Signál, že nebudeme schopni postavit spodní hranici větší než


PODLE Kapitola 4 Optimální algoritmy

spodní hranici již máme F(n), může sloužit například jako prezence A E .s4, pro který TA (n) = f(n). S takovou situací se setkáváme v předchozím odstavci v příkladech 14.1 a 14.3. Algoritmus pro nalezení nejmenšího nám známého prvku a algoritmus pro binární nalezení místa prvku v uspořádaném poli mají každý složitost, která se shoduje s nalezenou dolní hranicí. Tyto algoritmy jsou optimální ve smyslu následující definice.

Definice 15.1. Nechat .s4- třída algoritmů pro řešení nějakého problému. Nechť existuje dohoda o tom, jak se měří náklady na algoritmy a co se považuje za velikost vstupu, a nechť n- označení velikosti vchodu. Algoritmus A E .s4 volal optimální PROTI j4, Li T A(n) je spodní hranicí složitosti algoritmů j4.

Příklad 15.1. Při získávání spodní hranice složitosti a dokazování optimality je někdy užitečné vyvolat funkce na množinách těch hodnot, které vznikají během provádění algoritmu, například na množinách hodnot proměnných používaných algoritmu.

Nabídka 15.1.funkce f(n) = Г 2 n 1 - 2 je dolní hranicí složitosti algoritmů pro současný výběr největších a nejmenších prvků pole délky n pomocí srovnání.

Důkaz. Každá fáze provádění libovolného algoritmu PROTI, na základě srovnání a navržených k nalezení největších a nejmenších prvků pole lze charakterizovat čtyřnásobkem ( ABECEDA) podmnožiny množiny počátečních prvků (x g, x 2, ■ ■ ■, x n ), Kde

A sestává ze všech těch prvků, které nebyly vůbec porovnávány;

B sestává ze všech těch prvků, které se účastnily nějakých srovnání a vždy se ukázaly jako velké;

C sestává ze všech těch prvků, které se účastnily nějakých srovnání a vždy se ukázaly být menší;

D sestává ze všech těch prvků, které se účastnily některých srovnání, někdy se ukázaly být větší a někdy menší.

Nechat abeceda- počet prvků sady ABECEDA respektive. Výchozí situace je charakterizována rovností a = n, b = = c = d = 0. Po dokončení algoritmu se rovná-


§ 15 . Optimální algoritmy

stva A = 0, b = c = 1, d = n-2. Po prvním srovnání, po celou dobu provádění algoritmu, nerovnosti b^1,c^1.



Všechna srovnání provedená při provádění algoritmu PROTI, lze rozdělit na typy, označ AA,AB,AC,AD,BB,BC,BD,CC,CD,DD, např.: srovnání patří k typu AB , pokud je jeden z porovnávaných prvků převzat z A , jiný-z V , atd. Na základě toho můžeme vypsat všechny možné změny čtveřice (a, b, S, d) pod vlivem srovnání různých typů.




Horní