aantal bewerkingen

Moderators: dirkwb, Xilvo

Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
Reageer
Gebruikersavatar
Berichten: 997

aantal bewerkingen

Hoe kan je inzien hoeveel bewerkingen er nodig zijn om een natuurlijk getal n te reduceren tot 1 of 0 door enkel de bewerkingen "delen door 2" en "min 1" te gebruiken? (Respectievelijk wanneer het deelresultaat even en oneven is.) Of is dit misschien niet mogelijk? Het heeft te maken met de complexiteit van een algoritme.

Re: aantal bewerkingen

Zij n het natuurlijke getal in kwestie.

Schrijf het getal binair.

Dat geeft een getal van a=[1+2log n ] cijfers waarvan er zeg b enen zijn.

Het aantal bewerkingen is dan a + b.

Gebruikersavatar
Berichten: 997

Re: aantal bewerkingen

Dus als ik een algoritme (een lus) heb dat a+b bewerkingen doet en ik bekijk het ergste geval (het geval met meest aantal bewerkingen) dan zijn er dus 2a bewerkingen. Bijgevolg kan ik zeggen dat de tijdscomplexiteit = O(2a) = O(2(1+²log n )) = O(²log n ) = O(log n ). Klopt dit? (b Kan toch nooit sneller stijgen in functie van n dan a (asymptotisch)?)

Re: aantal bewerkingen

Correct

Gebruikersavatar
Berichten: 997

Re: aantal bewerkingen

Erg bedankt! (Die truc van binair schrijven daar was ik nooit opgekomen.) Overigens wel vreemd dat zulk een algoritme dezelfde complexiteit heeft als een algoritme dat elke keer het min 1 doet ineens ook deelt door 2.

Berichten: 251

Re: aantal bewerkingen

Erg bedankt! (Die truc van binair schrijven daar was ik nooit opgekomen.) Overigens wel vreemd dat zulk een algoritme dezelfde complexiteit heeft als een algoritme dat elke keer het min 1 doet ineens ook deelt door 2.


Daarom is binair rekenen zo mooi. Vermenigvuldigen is 'hetzelfde' als optellen.

En daarom kunnen we een AND-poort gebruiken om bewerkingen te doen.

Reageer