In che modo Knuth deriva A?


9

Quando interpretiamo le chiavi come numeri naturali possiamo usare la seguente formula.

h(k)=m(kAmod1)

Quello che ho difficoltà a capire è come scegliamo il valore di A dove:

0<A<1

Secondo Knuth un valore ottimale è:

A(51)/2=0.6180339887...

Quindi la mia domanda è: come è arrivato Knuth e come posso calcolare un valore ottimale per i miei dati specifici?


3
Trovo interessante che ... e googling che in realtà hanno portato un riferimento a "Knuth sostiene che la moltiplicazione ripetuta per il rapporto aureo minimizzerà gli spazi vuoti nello spazio hash, e quindi è una buona scelta per combinare insieme più chiavi per formare uno ". A=1+ϕ
Ahmed Masud,

1
Se ricordo bene è spiegato in uno degli esercizi in che senso è ben distribuito nell'intervallo unitario. Non ho il libro ora da controllare, però. kAmod1
Radu GRIGore,

1
@RaduGRIGore è un noto teorema che è distribuito uniformemente modulo per qualsiasi irrazionale (teorema 6.3 dei "Numeri irrazionali" di Niven). Forse è la scelta migliore in un certo senso. A,2A,1AA=1+ϕ
didest

2
Non esiste qualcosa di "più ottimale"; è come dire "meglio". O è il valore ottimale o non lo è.
Jeffε

2
Vale la pena sottolineare che questo valore viene utilizzato anche dai processi naturali. In particolare, l' angolo d'oro regola il posizionamento di petali, ornamenti, ecc. In molte piante. Una rotazione di questo angolo può essere applicata ripetutamente quando si posizionano i punti attorno a un cerchio e i punti saranno distribuiti uniformemente (all'interno di un fattore costante).
James King,

Risposte:


19

Vedi l'esercizio 9 della sezione 6.4 di The Art of Computer Programming .

Qualsiasi irrazionale funzionerebbe, perché rompe un grande divario di (io uso la notazione per ).A{kA}{A},{2A},,{(k1)A}{x}xmod1

Ma se o , ha una proprietà speciale: questi sono gli unici valori per i quali nessuno dei due spazi vuoti appena creati è più del doppio del tempo altro.A=ϕ1A=ϕ2


7
Inoltre, la dimensione del più piccolo spazio è il più grande possibile.
Jeffε
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.