Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 4 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Zložitosť algoritmu

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26
Bydlisko: Kesa
Príspevok NapísalOffline : 18.02.2012 21:45

Vedel by mi niekto vysvetliť, ako sa určuje konštanta c určujúca zložitosť ( napríklad bubble sortu ) f(N) = cN.N ?
Nejde mi o to výsledok, ale ako sa k nemu dopracovať.







_________________
NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n
Offline

Užívateľ
Užívateľ
Zložitosť algoritmu

Registrovaný: 01.10.06
Prihlásený: 19.04.24
Príspevky: 6562
Témy: 15
Bydlisko: Bratislava
Príspevok NapísalOffline : 18.02.2012 22:22

Mam pocit ze "c" sa nejakym sposobom nespecifikuje to je tam koli tomu aby ked to niekto precital tak vedel ze sa tam nevykonavaju dva vnorene prazdne cykly ale ze sa v nich aj cosi robi. Konkretna hodnota c bude zavisiet od toho na akej platforme to bezi a na akej urovni to breies lebo ak s tym ides az na instrukcie tak tam budes mat povedzme c=50 pri x86 architekture ale na nejakom ARM to bude mozno 70.
V skole sme na predmete analyza a zlozitost algoritmov nikdy nevycislovali hodnotu c







_________________
PC: Intel Q6600@3,33GHz, MSI GTX 670 OC (TwinFrozr IV), DDR2 1066 A-data 8Gb, Seagate Barracuda 7200.12 2000GB, Kingston 240GB SSD, Gigabyte EP35-DS4, MSI OPTIX G273QF , Logitech G502 Proteus Spectrum
Notebook: Sony VAIO CW Series (VPC-CW1S1E/B) / LENOVO Legion 5 Pro 16ACH6H Stingray White || Mobil: Samsung Galaxy S21 FE || Auto: Audi S5 Sportback
Offline

Užívateľ
Užívateľ
Zložitosť algoritmu

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26
Bydlisko: Kesa
Príspevok Napísal autor témyOffline : 19.02.2012 8:48

Hej to viem že je časová a priestorová zložitosť a záleži od tvojho PC. Len od nás žiadajú naprogramovať bubble sort a vyčísliť tú zložitosť (naprogramované to mám, ale nechcem to sem dať nech to neni skopčené). Keď je to N.N, tak či tie N-ká nie sú prechody cyklu, ale zároveň je tam aj if, no neviem

// pridané po 6 minútach od posledného príspevku

Takto, mali sme ten algoritmus z efektívniť. Dám sem ten klasický bubble sort a na ňom, keď by mi to mohol dakto vysvetliť
Kód:
for(i = 0; i < pocet; i++)
{
   for(j = 0; j < pocet - 1; j++)
      {
         if(pole[j] > pole[j + 1])
            swap(pole[j], pole[j+1]);
      }
}


P.S.: Nepíšte mi sem prosím žiadne vylepšenia tohto algoritmu, ide mi len o tú zložitosť







_________________
NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.02.12
Prihlásený: 23.02.12
Príspevky: 4
Témy: 0
Príspevok NapísalOffline : 22.02.2012 8:59

Zlozitost algoritmu sa zvykne zjednodusene urcovat podla toho kolkokrat sa procesorovo/casovo intenzivna cast musi vykonat pre dosiahnutie vysledku. Pre funkciu, ktora je v cykle o dlzke "n" je zlozitost "O" zavisla od "n":

O(n)

Co sa tyka tvojho uveneho prikladu, ide o neoptimalizovanie bublinkove triedenie a jeho zlozitost je

O(n*n) // celkovy pocet cyklov = pocet vonkajsich * pocet vnutornych

Obcas, ak pocet cyklov zavisi od nejakych podmienok, uvadza sa minimalna a maximalna zlozitost. V tvojom pripade vsak je pocet cyklov fixne dany, takze

Omin = Omax = O(n*n)

Bublinkovy algoritmus sa da vylepsit tak, ze, pri kazdej iteracii vonkasieho cyklu skontrolujes ci bol v predchadzajucom cykle "swap" vykonany.
Ak ano, pokracujes normalne dalej. Ak nie, mozes skoncit, pretoze pole je zoradene. Pri tejto optimalizacii pre najlepsi pripad (pole je hned na ziacatku zoradene) plati:

Omin(n)

pre najhorsi pripad zlozitost zostava Omax(n*n)


Odpovedať na tému [ Príspevkov: 4 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Casova zlozitost

v Assembler, C, C++, Pascal, Java

8

1514

01.11.2008 9:18

p360t Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Online výherný automat - tvorba algoritmu, aplikacie na webe

v Ponuka práce

0

561

15.07.2013 15:41

AndrejHronecky Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra