Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Logik

Stran: 1 ... 62 63 [64] 65 66 ... 68
946
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 16. 10. 2010, 21:50:46 »
Ultimator:Otázka byla, jak se naučit programovat. Nikoli jak získat místo junior programmera. Pokud se naučí programovat, na to co píšeš bude v případě potřeby stačit měsíc...

Samozřejmě, že nejjednodušší je naučit se php a jít dělat weby. Tomu ale se skoro nedá říct programování....

947
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 16. 10. 2010, 20:45:44 »
Anonymni funkce lze nahradit neanonymnimi? Ano, i v assembleru lze psát objektově. Bohužel
1) funkce se definuje jinde než se používá, tzn. kód je hůře čitelný
2) namespace se zaplácává zbytečnejma identifikátora a tím např. stěžuje orientaci v kódu pomocí automatizovanejch nástrojů, zapleveluje automaticky generovanou dokumentaci etc...

---
ad interfacy: Mám knihovnu, ve které je interface IA a IB poděděné z IA. Implementuju objekt A implementující IA a jeho potomka B implementujícího IB. Přestože objekt B má všechny metody interfacu IA, C++ kompilátor zařve, že mu schází všechny metody IA, poděděné skrze IB.
Proto pomocí vícenásobné dědičnosti v podání C++ neimplementují vše, co nabízejí jiné jazyky v podobě interfaců.

Řešit to lze pomocí virtuální dědičnosti, ale
1) knihovna, ve které mám ty interfacy nemusí být moje a tedy nemusím mít možnost ji upavovat
2) i pokud je knihovna moje, tak proč bych musel při návrhů interfaců přemýšlet o tom, jestli se někdy budou nebo nebuou účastnit diamantové dědičnosti? To je čistě záležitost implementace a proto do návrhu interfaců nepatří.
3) Řešit to celé tím, že všechny interfacy budou děděné virtuálně taktéž není řešením, neboť hlubší virtuální dědičnost má velké nároky na výkon.

Citace
prave ma pravou vicenasobnou dedicnost
Ano, C++ má pravou vícenásobnou dědičnost. Bohužel není v praxi příliš použitelná.
Jediné, co v C++ odpovídá vícenásobné dědičnosti tak, jak ji chápe OOP je vícenásobná virtuální dědičnost.A ta je natolik paměťově i časově náročná, že se používá minimálně.
Běžně užívaná prostá vvícenásobná dědičnost se již chová jinak, než by člověk čekal: je to něco mezi dědičností a kompozicí.

Navíc rozlišování mezi virtuální a nevirtuální dědičností vede k tomu, že musím u předka přemýšlet nad tím, jací a jak budou implementováni potomci (a jestli tedy musím dědit virtuálně či ne). Což je úplný opak toho, o co se snaží OOP - aby jednotlivé objekty byly implementovány samostatně.

Citace
a vsichni znaji jeji omezení
I v assembleru lze psát objektově a všichni znají jeho omezení. Přesto bych na objektové programování doporučil jiný jazyk.

Implementace vícenásobné dědičnosti v C++ má svoje plusy a svoje mínusy.Když píšu v C++, vadí mi absence interfaců (respektive její ne uplně dobrá emulace pomocí vícenásobné dědičnosti), když píšu v jiných jazycích, někdy mi vadí absence vícenásobné dědičnosti.
Přesto myslím, že jak mé zkušenosti, tak i obecná praxe a výsledek vývoje nových programovacích jazyků ukazuje, že interfacy jsou daleko užitečnější než vícenásobná dědičnost: zatímco snad všechny moderní jazyky mají interfacy, snad žádný neimplementuje vícenásobnou dědičnost. Přičemž vzhledem k tomu, že drtivá většina z nich je interpretovaná či alespoň runtime kompilovaná, nebyl by s přidáním vícenásobné dědičnosti žádný problém.

948
Vývoj / Re: Optimální algoritmus výpočtu
« kdy: 16. 10. 2010, 16:36:28 »
Citace
To, že jsou dvě věci ekvivalentní přece neznamená, že nemohou být jiné.
To už je slovíčkaření - tak si pojďme definovat, o čem se bavíme. Ty jsi mě napadal, že nemůžu použít tudle indukci a musím použít jinou. Čimž si "jinost" definoval jako schopnost dokázat jinou množinu tvrzení. A v tomto smyslu ty dvě indukce prostě jiné nejsou.
Jinými slovy - ekvivalentní znamená v matematice záměnné. Takže pokud jsou dvě věci ekvivalentní, není pravda, že musím použít jednu a nesmím použít druhou.

Citace
První krok udělat nemusíš. A tvůj indukční předpoklad je zbytečný ve všech krocích, a zbytečné jsou i samotné kroky. Snažíš se nacpat indukci tam, kde žádná není potřeba. Následující tvrzení přece platí i bez jakýchkoli premis...
Samozřejmě, že to tvrzení je pravdivé samo o sobě. Btw. jestli sis všimnul, tak ve svém důkazu jsem právě podobné lema zavedl. Jenže to Ti nestačí - ty totiž při výpočtu P(n) hodnoty P(i) neznáš!
Protože ty přeci v tom algoritmu nesčítáš minimální košíky, ty sčítáš nějaké čísla, o kterých tvrdíš, že to jsou minimální košíky. A to, že ta čísla co sčítáš jsou opravdu minimální košíky je právě ten indukční předpoklad.

Formálněji: Máš funkci danou předpisem:
f(0) = 0
f(n) = min( i(n), f(a) + f(b): a+b = n), a,b,n je z N, i(n) = nejnižší cena balení s i prvky,
existuje-li, jinak nekonečno.
Tudle funkci počítá ten můj algoritmus (nemám tam teda pro jednoduchost ošetřenou nulu na vstupu). Chceš dokázat, že pro každé n z N platí tvrzení T(n).
P(n) = f(n)
K tomu, abys toto tvrzení dokázal tu indukci potřebuješ. Protože pro každé n potřebuješ aplikovat ono lema + indukční předpoklad, že f(a) a f(b) jsou minimální košíky pro a/b prvků.

Pokud nevěříš mě, tak si přečti to, co jsem už asi pěštrát postoval:
http://math.feld.cvut.cz/habala/teaching/dma/dmknih03.pdf
příklad 3a.d algoritmus pro výpočet faktoriálu. V podstatě to samé.
Pro důkaz n! =n*(n-1)! indukci nepotřebuješ. Pro důkaz korektnosti algoritmu tento vzorec užívajícího však ano.

A pokud jde o to, že nikde dál nepoužiješ předpoklad pro nulu, tak to je MI úplnej šumák.
Pro MI je prostě potřeba mít nějakej pevnej bod, z kterýho začneš. Jelikož se bod pro nulu sestrojí nejjednodušeji a zároveň nezesložití indukční krok, je velmi vhodné začít z něho. Je úplně jedno, jestli ho pak někdy použiješ nebo ne.

Citace
U důkazu matematickou indukcí, kterým budu dokazovat, že pro každé přirozené n platí sqrt(n^2)=abs(n), dokonce žádný "indukční krok" nebude potřebovat indukční premisu, a důkazu to taky nijak nevadí...
A proto klidně můžu MI užít. Ale tady je jednodušší to tvrzení dokázat jinak, takže užití MI není nejvhodnější, byť možné. To však není náš případ, my jak jsem ukázal MI užít musíme.

Citace
Ale trvám na tom, že není pravdivé tvoje tvrzení, že moje tvrzení není pravdivé. A také není pravdivé tvoje tvrzení, že by bylo nutné povolovat nějaké záporné počty balení.
Na to, aby šlo psát f(a) + f(b) je třeba definovat operaci sesypání košíku a co je to košík. Definujeme ho tedy jako n-rozměrný vektorový prostor nad pologrupou jejíž hodnoty jsou počet balení, kde bázi tvoří jednotlivá balení. Sesypání košíku je pak součet vektorů. Cena košíku c(k) je daná jako skalární součin vektoru košíku a vektoru ceny jednotlivých balení. Velikost košíku v(k) je skalární součin s vektorem počtu produktů v balení.
P(n) a f(n) má pak definiční obor daný oborem hodnot funkce v(k).

Není-li možný záporný počet balení, pak je danou grupou grupa N_0 a obor hodnot v(k) a tedy definiční obor f(n) je taktéž N_0.
v T(-55) je užito f(-55), ta je však definovaná taktéž pouze nad N_0. Tvrzení tedy nemá smysl. (stejně jako nemá smysl tvrzení, ve kterém je dělení nulou.

Je-li možný záporný počet balení, pak T(1) neplatí. Protože
T(1) je P(1) = f(1), kde f(1) = min(i(1)), tedy
Přitom snadno se sestrojí protipříklad s balením po dvou za 2Kč a po třech za 3(Kč), kde
f(1) = nekonečno, přitom P(1) <= 1
neboť pro k= {1*3kusy - 2*2kusy} je v(k)=1 a c(k)=1.
A T(1) tedy neplatí. Co jiného jsem předtím tvrdil?

Pozn.: T(-55) => T(1) je v tomto případě pravdivé: (false => false) <=> true, ale nemůže být indukčním krokem, protože T(n) je nepravdivé pro každé n (a tedy vůbec nelze užít indukci). O pravdivosti této celé implikace jsem předtím ale nemluvil.

949
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 16. 10. 2010, 14:56:31 »
novacisko:
Citace
Které moderní jazyky jste zde měl na mysli?
Např. Java, C#, Delphi, dokonce i blbý php. Všechny tydle jazyky např. podporují interfacy, které se sice dají V C++ emulovat vícenásobnou dědičností, někdy to ale vyžaduje virtuální dědičnost a to ne vždy jde (např. u interfaců z cizí knihovny).
Další věc, která v C++ není jsou např. anonymní funkce, které se používají jako handlery, s member pointery taky není úplně ideální práce atd... Není to samozřejmě nic, co by nešlo obejít, ale objektově se dá psát i v assembleru, ale v jiných jazycích má člověk víc předpřipravených programátorských idiomů.

Citace
A co kdyz vam selze sprava pameti - i to se stava, a neni to nic zas tak vyjmecneho, z duvodu, ktere zna jen on?
Co to znamená selže správa paměti? Tobě se jako v javě stalo, že ti něco alokátor odalokoval, když neměl???

Citace
V C/C++ pokud to nesprasi programator k nicemu takovemu by dojit nemelo. Jeste jednou - pokud to neprasi programator.
Jenže to je právě to o čem mluvíme. Pokud se člověk učí programovat, tak dělá chyby. Takže na učení je vhodnej jazyk, kterej mu jasně a srozumitelně řekne kde je chyba. To C není - např. chyba v mezích pole se projeví jen tím, že se přepíše hodnota nějaké jiné proměnné a program běží dál....

Další nevýhoda C je v tom, že je to velmi výrazově bohatý jazyk. Což ale vede k těžko odhalitelným chybám, púamatuju si, jak jsem kdysi asi den ladil to, že místo
(*c)++ jsem napsal *c++. Skončilo to přepsáním CMOSKY a nefunkčním tátovým počítačem :-).

Jinak já netvrdím, že ty všechny výhody, které C má (že dělá jen to, co člověk chce) nejsou pro učení podstatné. IMHO každej programátor by měl někdy v takovém jazyku psát. Akorát nejsem přesvědčen, že (obzvlášť pro samostudium, kde Ti tu chybu nikdo nenajde) je vhodné s ním začínat.
Nicméně po nějaké průpravě s Delphi a Visual basicem to asi už jde....

950
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 15. 10. 2010, 10:58:19 »
Podlesh: tys asi v C moc nedělal, když ho dáváš do souvislosti s různým adresováním a zásobník a registry.... IMHO pro začátečníka jsou v C dva problémy a to práce s řetězci a horší možnosti ladění.

  Pro výuku ho považuju za vhodnější než Basic či VisualBasic. Jelikož jsem prošel ve svých mladých letech vývojem Basic - VisualBasic - C++ (pascal až poté ve škole), tak myslím, že to tvrzení má nějakou relevanci. Těch zlozvyků, co jsem se musel z Basicu odnaučit....

Tiger, novačisko: Psát objewktově se dá i v assembleru. Jde jen o to, jak velkej support ten danej jazyk poskytne. C++ proti modernějším jazykům v tom moc dobře není a proto ho osobně pro výuku objektového programování nepovažuju za příliš vhodný - netlačí člověka k správnému způsobu psaní, a některé běžně používané obraty se tam nechovaj standardně
 (např. interface).

Čím víc nad tím přemýšlím, tak bych začal algoritmizací v pascalu či pythonu, přes pokročilejší algoritmizaci v C a pak přešel na nějakej objektovej jazyk (Java, C#).
No a do toho nějakej kus javascriptu, pokud člověk není takovej masochista, že si začne s lispem/schemem...

951
Vývoj / Re: Optimální algoritmus výpočtu
« kdy: 15. 10. 2010, 00:13:44 »
Jenže zaříznout to dřív opravdu nejde - nikdy nevyloučíš, že v těch zaříznutejch možnostech není lepší řešení.
Btw. pokud bys opravdu to dokázal udělat polynomiálně, tak dostaneš cenu tuším 100000$ (nebo milion, teď nevim)? Tak máš dobrou motivaci pro studium :-)

952
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 15. 10. 2010, 00:11:10 »
jehovista: no, já zas ve windows na notebooku třeba rozchodím dva monitory a hybernaci, v linuxu nikoli. Každej systém má svoje plus a svoje mínus. Pro C/C++ by zas člověk proklínal linux, protože MS Visual studio imho nemá v IDE konkurenci (byť díky eclipse, emacs apod. je situace daleko lepší než dřív). Trochu nadhledu to chce...

tiger: Souhlasím. POokud se to chce dělat pořádně, tak aspoň nejakej čas na Cčku to chce. Akorát si nejsem jistej, že ze začátku, první co je potřeba je do sebe dostat programovací paradigma, a to jde v čemkoli. A špatné náviky se dají získat i z Cčka
- díky neexistenci objektů (respektive ne zrovna ideální implementaci v C++) se člověk
učí bastlit místo dělání čistýho návrhu.
Osobně myslím, že C/C++ rozhodně ano, a poměrně brzo, ale nevím, jestli bych s ním začínal...


953
Vývoj / Re: Optimální algoritmus výpočtu
« kdy: 15. 10. 2010, 00:03:07 »
jaromire, my všichni víme, jak tvuj program počítá. Akorát zároveň víme.
a) jeho složitost je exponenciální.
b) nemusí najít nejlepší řešení v rozumném čase
Viz protipříklad
x balení s
3300-3990 kusů
                       á 1Kč
4000 kusů á 2Kč
1 kus     á   1000000Kč
a chci 1600 kusů.
c) v každém případě to počítá pomaleji než dynamické programování
(neboť to zařezává řešení až při přesažení doteď nalezené ceny, zatímco dynamické programování zařezává řešení mnohem dříve).

Tak prosím o čem nás chceš přesvědčit?

954
Vývoj / Re: Optimální algoritmus výpočtu
« kdy: 14. 10. 2010, 23:03:07 »
Citace
Najdi si "complete induction" v http://en.wikipedia.org/wiki/Mathematical_induction.
A tim jako tvrdíš co?
edit po editu:
Už tuším. Ty jsi napadal mé tvrzení, že v MI stačí vědět, že je vyřešen krok 0 a pro krok n že je vyřešen krok n-1. Tak jsem Ti dokázal, že tomu tak je. Pokud nevěříš mému naznačení důkazu, tak věta 3.3a
v
http://math.feld.cvut.cz/habala/teaching/dma/dmknih03.pdf

Druhou věc, kterou jsem tvrdil bylo, že neexistuje jiná indukce. Pokud je slabý a silný princip indukce EKVIVALENTNÍ, nemůže být JINÝ. protože kdyby byl jiný, nemohl by být ekvivalentní.

Citace
To, že z A lze odvodit B ještě neznamená, že B je nic.

Já jsem netvrdil, že je něco k ničemu. Trochu to obracíš ne? Ty Celou dobu tvrdíš, že já něco musím dokazovat tak a tak, že na to musím použít jinou indukci atd....
Já ti jen vyvracím tvoje tvrzení, ukazuju, že můj přístup je korektní ba i v něčem ekvivalentní s tvým.

---

Btw. i v tom textu máš:
Usually, n = 0 or n = 1.
Takže sis sám vyvrátil, že musíš začít u jedničky.

Citace
Pokud povolíš košík s nulovým počtem balení, nevidím důvod proč nepovolit i se záporným počtem balení. Ale o to, jestli povolit nebo nepovolit tu vůbec nejde. To tvrzení pravdivé je...
Nevidíš důvod u takhle triviální věci a poučuješ tady lidi o (vzhledem k tomu) poměrně složitejch věcech jako je korektnost MI a teorie složitosti a NP-úplnosti?

Pokud povolíš košík se záporným počtem kusů, tak můžeš např. udělat košík s jedním kusem jako 1x3kusy + (-1)x2kusy. Takže jaksi už vůbec nejde použít indukce, on samo ani nebude fungovat ten algoritmus, dokonce ani nebude (v drtivé většině případů) existovat minimální cena za X kusů (proč si vymysli sám).

Citace
Jinými slovy tvůj předpoklad "Je-li P(0) nejnižší cena košíku s nula prvky" je zcela zbytečný. Snažíš se vyrobit indukční krok 0->1 tam, kde žádný není.
Jaktože tam není? Dolazuju indukcí od nuly, takže tam je z definice MI.
Pokud P(0) platí a P(0),..,P(n-1) => P(n), tak je to prostě korektní důkaz. Ani jedno z těch tvrzení jsi nijak nevyvrátil, jen furt s odpuštěním mektáš, že to nesmím (proč?) nebo že je to zbytečný (což není, nějakej první krok udělat musím a P(1) je složitější než P(0)) a i kdyby nakrásně bylo, tak to na správnosti důkazu nic nemění.

Navíc ten důkaz i odpovídá algoritmu - algoritmus přeci nezačne tak, že si dá do košíku balení s jedním prvkem a pak začne cyklus, algoritmus začne cyklus s prázdným košíkem.

Citace
Jinými slovy tvůj předpoklad "Je-li P(0) nejnižší cena košíku s nula prvky"
Ano, v prvním kroku indukce je tento předpoklad zbytečný. Tak se mám kvůli tomu oběsit? Dokážeš pochopit, že když se pracuje s MI, že prostě dokážeš P(n_0) a P(0),..,P(n-1) => P(n) a tím máš důkaz hotovej? Že tě nezajímá jak to je konkrétně v prvním, druhém, stém kroku, ani jestli a jak v kterém kroku použiješ indukční předpoklady. Prostě pokud tyto dvě implikace platí, výrok je dokázanej. Tečka.

Co třeba důkaz MI že pro posloupnost
a0=1
a_2i=2*a_(2i-2)
a_2i-1=1
Platí:Je-li i je sudé pak a_i=2^(i/2) jinak a_i=1

Tam dokonce nejen A(1), ale dokonce každej druhej indukční krok nebude potřebovat indukční premisu. Vadí to snad nějak tomu důkazu? Nebo jako nesmím použít MI, když v některejch krocích nepoužiju premisu? To Stalin zakázal?

955
Vývoj / Re: Licence webu psaného na zakázku
« kdy: 14. 10. 2010, 20:08:35 »
Jo, o tomdle paragrafu jsem nevěděl.... Nicméně
§ 58 začíná:(1) Není-li sjednáno jinak,
Takže pokud chceš to mít právně čistý, tak stačí si ve smlouvě vymínit, k čemu práva chceš a nechceš.


956
Vývoj / Re: Optimální algoritmus výpočtu
« kdy: 14. 10. 2010, 19:36:05 »
Už jen krátce, protože todle nejde, předtim se snažíš předefinovat složitost, teď zas matematickou indukci.

Citace
Při indukci je vyžadováno, aby pro krok n byl vyřešen krok n-1....
AAuuuuuuu. Todle Ti právě úplně stačí..... Vždyť právě to Ti matematická indukce zajišťuje.
Protože když je vyřešen krok n-1, tak právě díky MI je vyřešen krok n-2 a proto je vyřešen i krok n-3 atd... Takže proto v kroku n můžeš předpokládat, že máš vyřešený všechny kroky předtím. Takže je to prostě úplně stadardní "typ" indukce. Není žádnej jeden druh indukce, kde dokazuješ P(n) => P(n+1) a druhej P(n_0) .. P(n) => P(n+1), je to jedna a ta samá indukce.

Jinými slovy, platí-li P(0), pro n>=n_0 je indukční krok P(n) => P(n+1) ekvivalentní s P(n_0) .. P(n) => P(n+1)
(zleva doprava je to triviální, zprava doleva to dostaneš pomocí modus ponens a dokázaných tvrzení pro nižší n).

Citace
Takže podle tebe je následující tvrzení indukční krok pro T(-55) => T(1):
Buďto povolím košík se záporným počtem balení, pak není T(1) pravda, nebo to nepovolím, a pak je to nesmysl.
Navíc bys musel hodně odhout definici principu MI, aby to splňovalo princip MI - ale to by nějak šlo, ale to je vzhledem k výše uvedeným faktům irelevantní.

957
Vývoj / Re: Jaký jazyk zvolit pro začátečníka
« kdy: 14. 10. 2010, 18:55:54 »
Linux imho nepotřebuješ.... zatim. Jakej jazyk je taky dosti sporny, jen ne to php. Osobně bych na učení algoritmů doporučil pascal, na učení objektovosti třeba javu, na to abys něco napsal rychle a přitom furt hezky python, na to abys zjistil něco o vnitřnostech počítače tak C, abys ses naučil něco z funkcionálních paradigmat tak třeba javascript (ale v tom se dá dosti prasit, čili ten rozhodně ne na začátku).... IMHO začni s libovolnym z tědle jazyků a časem vždy nějakej přiber...

958
Vývoj / Re: Optimální algoritmus výpočtu
« kdy: 14. 10. 2010, 16:22:26 »
Citace
V naší úloze indukční krok 0->1 neexistuje
?? Jaktože neexistuje ?? Ty chceš popřít existenci tohodle tvrzení???

Je-li P(0) nejnižší cena košíku s nula prvky, pak nejnižší cena košíku s jedním prvekm je minimum množiny vzniklé sjednocením množin A, B.
A = { Nejnižší cena balení s jedním prvkem }
B = { P(i) + P(1-i), kde i a 1 - 1 jsou přirozené }

Nebo snad chceš snad říct, že to tvrzení není pravdivé??
Protože přesně todle tvrzení je indukční krok pro T(0) => T(1).

Nebo neumíš dělat sjednocení s prázdnou množinou? Nebo Ti vadí, že se tu nepoužil indukční předpoklad? Tak si dej pozor, ať Tě nezavřou za znásilnění, nástroj máš, tak ho podle tvojí logiky musíš použít...

959
Vývoj / Re: Optimální algoritmus výpočtu
« kdy: 14. 10. 2010, 13:45:21 »
Ke ghostově replice není co dodat.

Klidně si to dokazuj indukcí od jedničky. Pokud bude v zadání omezeno, že chtěný počet balení musí být větší než nula, nebo ještě spešl vyřešíš případ pro nulu, bude důkaz samo korektní taky. Jen si stojím za to, že indukce od nuly je
a) korektní
b) Důkaz je o něco jednodušší, protože řešení pro nulu je triviálnější než řešení pro jedničku a indukční krok bude totožný.

Citace
Připadá mi, že neumíš přiznat, že jsi udělal chybu.
Plácáš hezky, ale furt jsi nevysvětlil, v čem by ta chyba měla být.

960
Vývoj / Re: Definice časové složitosti
« kdy: 14. 10. 2010, 13:35:12 »
Citace
Teorii algoritmů neumím, ale nemyslím si, že NP třídy a složitost musejí být definovány na Turingových strojích.
Nemusí. Ale prostě je. Můžeš ji definovat jinak, ale pak se budeš bavit o voze, zatimco všichni ostatní o koze. Můžeš začít budovat novou teorii od základů, ale bojím se, že budeš v pozici strýce Františka ze Saturnina.
(Pokud už chceš budovat novou teorii, tak aspoň nepřetěžuj užívané termíny novými významy).

Citace
Neřekl jsem, že algoritmus, který by uměl pracovat s libovolně velkým n, je algoritmus složitější a pomalejší asymptoticky.
Takže jsou tydle možnosti.
a) Daný fakt je k posouzení asymptotické složitosti algoritmu irelevantní, nebo
a) Nebavíme se o asymptotické složitosti, jejíž definicí ses tady oháněl.

Navíc adaptace na dlouhá číslá nezmění ani stupeň polynomu absolutní složitosti (viz dál).

Citace
Co má být jako omezeno při fixním zápisu vstupních dat? Počet slov na vstupu je vždy neomezený.
??? To fakt nevíš??? Libovolná veličina zadaná pevnou délkou. Tzn. cena produktu, počet balení v produktu, chtěný počet produktů...

Citace
Tato intuitivní definice půjde asi těžko formalizovat.
Fór je v tom, že
a) formalizovat nepůjde
b) není schopna porovnávat různé algoritmy

A už vůbec nemluvím o tom, že algoritmy jsou na sebe převeditelné, a to co je v jednom vyjádřené počtem, je v druhém vyjádřené číslem. Např. teď mě napadá např. automatické dokazování, kdy se dá dokazované tvrzení reprezentovat jako seznam termů, logických spojek atd..., takže dle naivní definice je složitost daná počtem prvů ve výrazu, anebo jít podle důkazu gödelovy věty a tvrzení očíslovat - a najednou mám podle Tebe složitost vyjádrřit dle velikosti čísla.
Takže podle toho, jakou zvolím interpretaci vstupu, tak se mi mění složitost???

----

Teda abych byl formálně správnej, je pravda, že definice složitosti v NP úplnosti asymptotická není, pro složitost jsou definice dvě:

Asymptotická.
http://cs.wikipedia.org/wiki/Asymptotick%C3%A1_slo%C5%BEitost
Ta ale vyžaduje, aby veličina, podle které se složitost měří (tzn. se kterou rychlost algoritmu nejvíce klesala) rostla do nekonečna. Tzn. tuto definici nelze užít pro algoritmus, kde je chtěnej počet zadanej omezeným číslem.
Navíc i tato složitost se běžně definuje v závislosti na délce, byť se to někdy zjednodušuje na počet prvků na vstupu (neboť u většiny algoritmů nezávisí rychlost na velikosti zpracovávaných hodnot, ale na jejich počtu).

Absolutní:
http://wiki.matfyz.cz/wiki/St%C3%A1tnice_-_NP-%C3%BAplnost

Absoutní složitost je definovaná polynomem jako horní mez trvání algoritmu pro všechny vstupy dané délky v binárním kódování.
Tady fixní délka vstupu použít jde, ale jelikož délka toho argumentu bude vždy stejná, výsledná složitost na něm vůbec záviset nebude. Vzhledem k tomu, že jde o nejpodstatnější parametr (nejvíc ovlivňující rychlost výpočtu), považuji užívání tohoto formátu v této definici složitosti za metodologickou chybu.

Takže než bude debata pokračovat, tak by prosím bylo dobré definovat, o čem se bavíme.
Popř. jestli je debata právě o tom, kterou definici vlastně používat, tak odkazuju na svůj první odstavec - pokud chceme řešit, jestli je daný problém NP nebo ne, tak má imho jedině smysl definice, která se používá pro definici NP úplného problému.

Stran: 1 ... 62 63 [64] 65 66 ... 68