maandag 29 juni 2026

Optimale beslisboom

Een beslisboom van m vertakkingen met elk n takken
heeft N=nm uitkomsten
maar een keuzelast B = n×m

Bij welke n en m is B optimaal? Ofwel
bij welke n en m is B/N minimaal?
🔽 Eerste poging
Dat gaat op als
∂(B/N)/∂n + ∂(B/N)/∂m = 0

We weten dat
B/N = n×m/nm =

m/nm-1

dus
∂(B/N)/∂n =
∂(m/nm-1)/∂n =
∂(m×n1-m)/∂n =
m×(1-m)×n1-m-1 =

m(1-m)×n-m

en
∂(B/N)/∂m =
∂(m/nm-1)/∂m =
∂(m×n1-m)/∂m =
∂(m×eln(n)(1-m))/∂m =
∂(m×eln(n)-m×ln(n))/∂m =
∂(mn×e-mln(n))/∂m =
mn×(∂(e-mln(n))/∂m) + (∂(mn)/∂m)×e-mln(n) =
mn×(-ln(n))e-mln(n) + n×e-mln(n) =
(-mn×ln(n) + n)n-m =

(1-m×ln(n))n1-m

Samenvoegend
∂(B/N)/∂n + ∂(B/N)/∂m =
m(1-m)×n-m + (1-m×ln(n))n1-m =
(m(1-m) + n - nm×ln(n))n-m
en dat moet =0 zijn.
Dus
m(1-m) + n - nm×ln(n) = 0 of n-m=0 ⇔ m=∞

m(1-m) + n - nm×ln(n) = 0 ⇔
m - m2 + n - nm×ln(n) = 0 ⇔
1 - m + n/m - n×ln(n) = 0 ⇔
1 - m = n×ln(n) - n/m ⇔

n(ln(n) - 1/m) / (1 - m) = 1

waar ik ook niet echt blij van word. Volgens ai klopt de berekening wel.

Bij nader inzien is de vraag of ∂(B/N)/∂n + ∂(B/N)/∂m = 0 van toepassing is.
Dat gaat over de gradient.
Voor een minimum moeten zowel ∂(B/N)/∂n = 0 als ∂(B/N)/∂m = 0.
De gradient is ook 0 als ∂(B/N)/∂n = -∂(B/N)/∂m
over n andere boeg dan maar
⏶ sluit eerste poging

🔽 Tweede poging
B = n×m en N=nm ⇔ n=N1/m en
B = m×N1/m
Bij vaste N hangt B alleen af van m met een verhoopt optimum als
∂B/∂m = 0 ⇔
∂(m×N1/m)/∂m = 0 ⇔
∂(m×eln(N)/m)/∂m = 0 ⇔
(∂m/∂m)×eln(N)/m + m×∂(eln(N)/m)/∂m = 0 ⇔
eln(N)/m + m×(ln(N)ln(m))eln(N)/m = 0 ⇔
(1 + m×(ln(N)ln(m)))eln(N)/m = 0 ⇔

(1 + m×(ln(N)ln(m)))=0 of eln(N)/m = 0 ⇔ m=∞


1 + m×(ln(N)ln(m)) = 0 ⇔
m×(ln(N)ln(m)) = -1 ⇔
m×ln(m) = -1/ln(N) ⇔
Optimum bestaat alleen bij m>0 en ln(m)<0, dus 0<m<1
mm = e-1/ln(N)
Nln(m) = e-1/m
⏶ tweede poging sluiten

🔽 Derde poging
B = n×m en N=nm
ln(N)=m×ln(n) ⇔
m= ln(N)/ln(n)
B/N = nm / nm = n(ln(N)/ln(n)) / nln(N)/ln(n)
De noemer vereenvoudigt door er eerst de ln van te nemen
ln(nln(N)/ln(n)) =
(ln(N)/ln(n))×ln(n) = ln(N) ⇔

nln(N)/ln(n) = N

Dus
B/N = n(ln(N)/ln(n)) / nln(N)/ln(n) =
n(ln(N)/ln(n)) / N ⇔ B/N = n×ln(N) / (N×ln(n))

B/N = (n/N)×(ln(N)/ln(n))

of eigenlijk, ontnuchterend

B = n×(ln(N)/ln(n))
en
B/ln(N) = n/ln(n)

⏶ derde poging sluiten

🔽 Te bewijzen valt dat het optimum bij n=e ligt, tussen 2 en 3.
B/ln(N) = n/ln(n)
Dat is minimaal als
ddn (nln(n)) = 0 ⇔
dndn × 1ln(n) + n×ddn (1ln(n)) = 0 ⇔
1ln(n) + n×d ln(n)dn × dd ln(n) (1ln(n)) = 0 ⇔
1ln(n) + n×n-1 × -(ln(n))-2 = 0 ⇔
(ln(n))-1×(1 - (ln(n))-1) = 0 ⇔
(ln(n))-1=0 of (ln(n))-1 = 1 ⇔ ln(n) = 1 ⇔

n = ∞ of n=e

⏶ QED, sluiten

Het dichtsbij e (= 2,718...) zijnde gehele getal is 3. Dus
B = n ln(N)/ln(n) wordt 3 ln(N)/ln(3)
N ln(N)ln(3) B1/(B/N)
3131
9261,33
27393
814126,75
............
21483927795
............
10000001003003333
Te vervolgen met een nieuwe list...
Al dit was bedoeld als vervolg op mijn oude blogpost "de-macht-van-zeven". Waarbij de intuitieve aanname lag dat B/N minimaal is bij n waarvoor nn=N
NnB1/(B/N)
1111
4241
27393
25641616
............
82354374916,81
............
1000000000010100100000000

Geen opmerkingen: