Dělení polynomů

Na cvičení jsme probrali algoritmus na dělení polynomů reprezentovaných pomocí spojových seznamů.

Vzhledem k tomu, že jsem slíbil bonusové body každému, kdo svou implementaci dotáhne do konce, nebudu sem psát žádnou další nápovědu.

Pokud máte pocit, že je váš program složitý, algoritmus, který se snažíte naprogramovat je v tom nevinně. Pokud se některá vaše procedura či funkce nevejde na jednu obrazovku, pravděpodobně je špatně vymyšlená - zkuste to znovu, lépe a radostněji!!

Kdo nebyl na cvičení, nechť zkusí před odevzdáním do CodExu svůj výtvor prověřit následujícím vstupem:

100000 2
20000 3
3000 4
500 6
40 7
3 8
0 9
-1
10 3
2 -6
-1

AVL-stromy

Ukázalo se, že BVS můžou být neefektivní, protože nemají prostředky, jak zajistit logaritmickou hloubku vzhledem k počtu vložených prvků.

To znamená, že po provedení určité posloupnosti operací insert (například pokud po řadě vložíme prvky, jejichž klíče tvoří rostoucí/klesající posloupnost) může vzniknout BVS hloubky h, ve kterém neplatí

h ≤ log(N)
kde N je počet uložených prvků.

AVL-stromy jsou chytře navržené tak, aby tímto nedostatkem netrpěly. V každém uzlu definují a udržují navíc (oproti BVS) ještě vyvažovací informaci. Kdo chce detaily a důkazy, může následovat odkaz na začátku tohoto odstavce. Kdo si chce hrát, dobře mu tak.

Domácí úkol

Jednoduchá oddechová hříčka Mrkev a petržel je cvičením na rekurzi.

Protože se ukázalo, že úloha Spojové seznamy - Dělení řidkých polynomů představuje pro řadu lidí netriviální problém, rozhodl jsem se odměnit vytrvalé tím, že za řešení dotažené do 100% budu rozdávat bonus 15 bodů. Tato nabídka je časově omezena prodlouženým druhým termínem v CodExu.