Matematik
Modulo og knapsack
Jeg tager et eksempel fra bogen, så kan jeg regne mine egne ting selv. Det er forresten i forbindelse med knapsack-konvertering:
k = t^(-1)(mod m)
m = 3245 og t = 899
k er beregnet til 2339 - men HVORDAN?
Jeg kan godt beregne f.eks. 479(mod 17) = 3... men ovenstående eksempel forstår jeg bare ikke.
Jeg kan heller ikke finde ud af at taste det ind på TI-89'eren :-(
Svar #1
17. december 2007 af JesperJuul (Slettet)
mod(x,n)
Men så til dit spørgsmål, for det fatter jeg heller ikke. Du bevæger dig jo ud fra de hele tal, når du opløfter i minus første?
Svar #2
18. december 2007 af EmptyPiedish (Slettet)
Der står:
"...
3) Vælg et tal t, således at 0 < t < m, og (m,t) = 1; dvs. t (indeholdt af) Z_m
4) Bestem det inverse element k til t modulo m, altså k = t^(-1)(mod m)
..."
Hjælper det?
Der ligger også en opgave herinde (noget med kryptering) hvor samme formel er anvendt, men der vist heller ingen beregninger... står bare at han har brugt Derive.
Svar #3
18. december 2007 af JesperJuul (Slettet)
Svar #4
18. december 2007 af JesperJuul (Slettet)
t*k = 1 (mod m). Hvis det var normalt aritmetik er det klart, at dette tal ville være t^-1. Men i modular aritmetik er jeg mindre sikker.
Svar #5
18. december 2007 af JesperJuul (Slettet)
899*k = 1 (mod 3245)
Det er klart, at denne er løst, hvis 899*k=3246. Altså, hvis vi må gå ind i de reelle tal er en løsning k = 3246/899. Det vil forsat være en løsning, hvis. Det er også klart, at:
3246 * n - (n-1) = 1 (mod 3245), hvor n er et naturligt tal.
Omskrives til:
899*3246/899*n - n - 1. Så er k = 3246/899*n - n - 1
k skal være et naturligt tal, så n skal bestemmes...
Men det passer desværre bare ingen steder, så der er noget galt. Men det er da derhen ad måske? :D
Svar #6
18. december 2007 af tal-pædagog (Slettet)
hvor
m = 3245 og t = 899
Dette løses vha. Euklids algoritme (som samtidig undersøger om det kan løses). Der skal nemlig gælde, at m og t er indbyrdes primiske for at ligningen har en løsning:
Euklids algoritme til at finde største fælles divisor mellem to tal:
3245 - 3*899 = 548
899 - 1*548 = 351
548 - 1*351 = 197
351 - 1*197 = 154
197 - 1*154 = 43
154 - 3*43 = 25
43 - 1*25 = 18
25 - 1*18 = 7
18 - 2*7 = 4
7 - 1*4 = 3
4 - 1*3 = 1
Som nu optrevles trin for trin til:
3245 = (1,0) (skal læses som 1*3245 og -3*899)
899 = (0,1)
548 = (1,-3)
351 = (0,1) - 1*(1,-3) = (-1,4)
197 = (1,-3) - 1*(-1,4) = (2,-7) (prøv selv, at 2*3245 - 7*899 = 197)
154 = (-1,4) - 1*(2,-7) = (-3,11)
43 = (2,-7) - 1*(-3,11) = (5,-18)
25 = (-3,11) - 3*(5,-18) = (-18,65)
18 = (5,-18) - 1*(-18,65) = (23,-83)
7 = (-18,65) - 1*(23,-83) = (-41,148)
4 = (23,-83) - 2*(-41,148) = (105,-379)
3 = (-41,148) - 1*(105,-379) = (-146,527)
1 = (105,-379) - 1*(-146,527) = (251,-906)
Derfor opnås fra sidste linje ligningen:
1 = 251*3245 - 906*899
<=>
-906*899 = -251*3245 + 1
Hvor man nu kan bruge ligningen:
3245*899 = 899*3245
til at justere den ovenstående, så man opnår positive løsninger:
(3245-906)*899 = (899-251)*3245 + 1
Altså med k = 3245-906 = 2339 kan man se, at:
k*t = 1 (mod m)
Svar #7
18. december 2007 af tal-pædagog (Slettet)
(1,0) læses som 1*3245 + 0*899
(0,1) læses som 0*3245 + 1*899
og f.eks. læses
(1,-3) som 1*3245 - 3*899 som giver 548, hvilket det netop skal
beklager fejlen, den er med til at forvirre!
Svar #8
18. december 2007 af EmptyPiedish (Slettet)
Jeg forstår ikke, hvordan du kommer frem til dette:
548 = (1,-3)
351 = (0,1) - 1*(1,-3)
197 = (1,-3) - 1*(-1,4
154 = (-1,4) - 1*(2,-7)
43 = (2,-7) - 1*(-3,11)
25 = (-3,11) - 3*(5,-18)
18 = (5,-18) - 1*(-18,65)
7 = (-18,65) - 1*(23,-83)
4 = (23,-83) - 2*(-41,148)
3 = (-41,148) - 1*(105,-379)
1 = (105,-379) - 1*(-146,527)
Og lige et tillægsspørgsmål: Hvis jeg nu har valgt m til at være 3457, hvad må t så være? (jf. #2)
Og tusind tak for hjælpen allerede! Nu kan jeg pludselig se, hvordan det hænger sammen med det bevis for største fælles divisor for to givne hele tal jeg skal lave.
Skriv et svar til: Modulo og knapsack
Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk?
Klik her for at oprette en bruger.
