Dat hangt ook af van welke waarden je getallen aan kunnen nemen. Als het bijvoorbeeld om gehele getallen tussen 0 en 100 gaat, kun je makkelijk bij houden of je een getal al hebt gehad door middel van een array. De complexiteit van het algoritme wordt dan O(n) tijd.quote:Op maandag 31 juli 2006 15:37 schreef Pie.er het volgende:
Hoe bewijs je dat een algoritme om dubbelen te zoeken minimaal O(n log n) is? Of is er stiekem toch nog een sneller algoritme dat ik over het hoofd zie?
Het gaat om N elementen, dus zou je bijectie kunnen maken naar een reeks gehele getallen. Het probleem zit hem alleen in die array: ongesorteerd moet je het k-de element vergelijken met de k-1 elementen uit de array. Volgens mij zit je dan met een process van orde n˛.quote:Op maandag 31 juli 2006 19:11 schreef Wolfje het volgende:
[..]
Dat hangt ook af van welke waarden je getallen aan kunnen nemen. Als het bijvoorbeeld om gehele getallen tussen 0 en 100 gaat, kun je makkelijk bij houden of je een getal al hebt gehad door middel van een array. De complexiteit van het algoritme wordt dan O(n) tijd.
Hmm.. nee, ik had een boolean array in gedachten. Als alle getallen tusen 0 en 100 (inclusief) liggen, krijg je iets als:quote:Op maandag 31 juli 2006 19:42 schreef GlowMouse het volgende:
[..]
Het gaat om N elementen, dus zou je bijectie kunnen maken naar een reeks gehele getallen. Het probleem zit hem alleen in die array: ongesorteerd moet je het k-de element vergelijken met de k-1 elementen uit de array. Volgens mij zit je dan met een process van orde n˛.
| 1 2 3 4 5 6 7 8 | boolean[] inVerzameling = new boolean[101]; for ( int i = 0; i < a.length; i++ ) { if ( inVerzameling[ a[ i ] ] ) return true; inVerzameling[ a[ i ] ] = true; } return false; } |
Hmm ja inderdaad. In mijn geval ging het om willekeurige integers, dus zou de opslag een oneindige array worden, maar dat is theoretisch geen enkel probleem.quote:Op maandag 31 juli 2006 20:13 schreef Wolfje het volgende:
[..]
Hmm.. nee, ik had een boolean array in gedachten. Als alle getallen tusen 0 en 100 (inclusief) liggen, krijg je iets als:
[ code verwijderd ]
Niet de bedoeling nee. Maar omdat er een tegenvoorbeeld is dat sneller dan O(n log n) is, hoe idioot veel geheugen er ook gebruikt wordt, weet ik dat ik geen bewijs ga vinden voor O(n log n) als ondergrens als ik geen geheugenoverwegingen meeneem.quote:Op dinsdag 1 augustus 2006 11:20 schreef thabit het volgende:
Meer geheugen dan tijd gebruiken lijkt me toch niet helemaal de bedoeling. Overigens zie ik ook niet hoe het sneller kan dan O(n log n), al zie ik ook niet direct hoe je dat kunt bewijzen.
Ik neem aan dat initialisatie van geheugen ook tijd kost? En al zou dat niet zo zijn, dat je in elk geval een eindige hoeveelheid geheugen gebruikt? Waarom enerzijds gebruiken dat natuurlijke getallen willekeurig groot kan zijn, zodat de 'tabelmethode' niet werkt en anderzijds gebruiken dat ze begrensd zijn zodat ze in constante tijd met elkaar vergeleken kunnen worden? Er zijn trouwens denk ik wel probabilistische methodes te bedenken die bij elke input in O(n) verwachte operaties het kunnen bepalen. Is dat een probleem of moet het per se deterministisch zijn?quote:Op donderdag 3 augustus 2006 09:44 schreef Pie.er het volgende:
[..]
Niet de bedoeling nee. Maar omdat er een tegenvoorbeeld is dat sneller dan O(n log n) is, hoe idioot veel geheugen er ook gebruikt wordt, weet ik dat ik geen bewijs ga vinden voor O(n log n) als ondergrens als ik geen geheugenoverwegingen meeneem.
En ik ga uit van een programmeertaal waarin twee getallen in 1 operatie met elkaar vergeleken kunnen worden. Dat dit in werkelijkheid wellicht niet zo is maakt niet veel uit voor de theorie
Ja die geheugeninitialisatie daar zat ik ook nog mee. Maar in Wolfjes code kwamquote:Op donderdag 3 augustus 2006 09:52 schreef thabit het volgende:
[..]
Ik neem aan dat initialisatie van geheugen ook tijd kost? En al zou dat niet zo zijn, dat je in elk geval een eindige hoeveelheid geheugen gebruikt? Waarom enerzijds gebruiken dat natuurlijke getallen willekeurig groot kan zijn, zodat de 'tabelmethode' niet werkt en anderzijds gebruiken dat ze begrensd zijn zodat ze in constante tijd met elkaar vergeleken kunnen worden? Er zijn trouwens denk ik wel probabilistische methodes te bedenken die bij elke input in O(n) verwachte operaties het kunnen bepalen. Is dat een probleem of moet het per se deterministisch zijn?
| 1 |
Nee, ik heb er wel even over nagedacht, maar zie het allebei toch niet echt direct. Al lijkt het me heel sterk dat het sneller zou kunnen dan O(n log n). Een andere manier dan sorteren, die ook O(n log n) is, is de lijst aflopen en opslaan in een gebalanceerde boom ipv een tabel. Maar helaas zijn de operaties in een gebalanceerde boom ook O(log n).quote:Op donderdag 3 augustus 2006 10:17 schreef Pie.er het volgende:
[..]
Maar zou je, zonder oneindig geheugen en met de aanname dat twee getallen in 1 operatie met elkaar te vergelijken zijn, een idee hebben voor een methode die sneller dan O(n log n) is?
Of een idee voor een bewijs dat zoiets niet mogelijk is?
Nee, aan website optimaliseren doen wij hier niet sorry.quote:Op maandag 7 augustus 2006 21:38 schreef teletubbies het volgende:
hoi hoi
ik heb een site gemaakt en wil die publiceren op internet.
Het is niet moeilijk om een host tevinden.
maar de vraag is, ik wil dat als je een paar trefwoorden intypt op google ofzo dat je die site kunt vinden..
hoe zit het in elkaar?
thanx
Het belangrijkste is dat je goede content hebt, en veel andere sites naar je linken. In dit Tweakers.net topic staan enkele tips genoemd. Door op SEO te googlen kom je waarschijnlijk meer tips tegen.quote:Op maandag 7 augustus 2006 21:38 schreef teletubbies het volgende:
hoi hoi
ik heb een site gemaakt en wil die publiceren op internet.
Het is niet moeilijk om een host tevinden.
maar de vraag is, ik wil dat als je een paar trefwoorden intypt op google ofzo dat je die site kunt vinden..
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |