Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 30. 04. 2010 16:17

AlienTAB
Zelenáč
Příspěvky: 11
Reputace:   
 

Návrh a detailní popis algoritmus s polynomiální časovou složitostí.

Ahoj můžete mi někdo prosím pomoct s následujícím příkladem ? Cokoli co vás napadne :)
Děkuji

Definujme funkci f, která přiřařuje sekvencím celých čísel sekvence celých čísel následujícím způsobem:
sekvenci ⟨x1, x2, . . . , xn⟩ délky n přiřadí sekvenci ⟨y1, y2, . . . , ym⟩ délky m = n · (n − 1)/2,
přičemž sekvenci ⟨y1, y2, . . . , ym⟩ dostaneme tak, že vezmeme všechny dvojice čísel (xi,xj),
kde 1 ≤ i < j ≤ n, každou takovou dvojici čísel sečteme a výsledné hodnoty těchto m součtů seřadíme od nejmenšího po největší. (Pozn.: Všimněme si, že z n čísel můžeme vytvořit právě n · (n − 1)/2 dvojic.)

Navrhněte a detailně popište algoritmus s polynomiální časovou složitostí řešící následující problém:
Vstup: Číslo n a posloupnost ⟨y1, y2, . . . , ym⟩ tvořená celými čísly, přičemž m = n·(n−1)/2.
Výstup: Nějaká posloupnost ⟨x1, x2, . . . , xn⟩ celých čísel taková, že f(⟨x1,x2,...,xn⟩) = ⟨y1,y2,...,ym⟩, nebo informace, že žádná taková posloupnost neexistuje.

Poznámka: Funkce f není ani injektivní ani surjektivní. Pro danou posloupnost ⟨y1, y2, . . . , ym⟩ může tedy existovat více různých posloupností ⟨x1, x2, . . . , xn⟩ takových, že f(⟨x1, x2, . . . , xn⟩) = ⟨y1, y2, . . . , ym⟩, nebo nemusí existovat žádná. Pokud jich existuje více, stačí, když algoritmus najde jednu z nich.

Offline

  • (téma jako vyřešené označil(a) byk7)

#2 01. 05. 2010 02:04

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4247
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: Návrh a detailní popis algoritmus s polynomiální časovou složitostí.

Algoritmus je popsán  na webu topcoder: http://www.topcoder.com/tc?module=Stati … ;d2=srm182 pod názve PairwiseSums.

Řešení tam uvedené vychází z toho, že x1 je z omezeného rozsahu a dá se najít zkoušením všech možností. Pokud chceme mít zaručenu polynomiální složitost, vyjdeme z toho, že známe x1+x2 a x1+x3 a budeme "tipovat", který ze součtů v y je roven x2+x3. Tím složitos naroste n(n-1)/2-krát a zůstane polynomiální.


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson