Nie
pewno jest.
Najpierw przypomnieć, że n-ta liczba jest równa Fibonacciego
cp (n) = [φ^n - (-φ)^(- n)]/√5
gdzie φ = (√ 5 + 1)/2 (złoty stosunek) i (-φ)^(- 1) = (1-√5)/2. Ale żeby było to krótsze, oznaczam φ jako A i (-φ)^(- 1) jako B.
Następnie zwróćmy uwagę, że suma liczb Fibonacciego jest sumą mocy A i B:
[φ (n) + φ (m)] * √5 = A^n^m + A - B^n - B^m
teraz, co jest wystarczające do Obliczono (w przykładzie {1,2,3}
) jest
A^1 + A^2 + A^3 + A^{1 + 2} + A^{1 + 3} + A^{2 + 3} + A^{1 + 2 + 3}.
Ale hej, jest to prostsze wyrażenie na to:
(A^1 + 1) (A^2 + 1) (A^3 + 1) - 1
Teraz nadszedł czas aby uzyskać cały wynik.
Niech nasz zestaw będzie {n1, n2, ..., nk}
. Wtedy nasza suma będzie równa
Sum = 1/√5 * [(A^n1 + 1)(A^n2 + 1)...(A^nk + 1) - (B^n1 + 1)(B^n2 + 1)...(B^nk + 1)]
myślę, matematycznie, jest to „najprostsza” formą odpowiedzi jak nie ma relacja pomiędzy n_i. Jednak może być trochę miejsca na optymalizację komputerową tego wyrażenia. Właściwie to nie jestem pewien, czy to (używając liczb rzeczywistych) będzie działało szybciej niż "proste" podsumowanie, ale pytanie dotyczyło unikania generowania podzbiorów, więc oto odpowiedź.
Czy nie Rozważmy zbiór pusty podzbiór? – Joni
@Joni No ........ –
Ładne pytanie !! – Mike