V matematice je Algoritmus Zassenhaus [1] je metoda pro výpočet a základ pro průsečík a součet ze dvou podprostory a vektorový prostor .Jmenuje se podle Hans Zassenhaus , ale není známa žádná jeho publikace tohoto algoritmu.[2] Používá se v systémy počítačové algebry .[3]
Algoritmus Vstup Nechat PROTI být vektorovým prostorem a U , Ž dva konečně-dimenzionální podprostory PROTI s následujícími překlenovací sady :
U = ⟨ u 1 , … , u n ⟩ { displaystyle U = langle u_ {1}, ldots, u_ {n} rangle} a
Ž = ⟨ w 1 , … , w k ⟩ . { displaystyle W = langle w_ {1}, ldots, w_ {k} rangle.} Nakonec nechte B 1 , … , B m { displaystyle B_ {1}, ldots, B_ {m}} být lineárně nezávislé vektory tak u i { displaystyle u_ {i}} a w i { displaystyle w_ {i}} lze psát jako
u i = ∑ j = 1 m A i , j B j { displaystyle u_ {i} = součet _ {j = 1} ^ {m} a_ {i, j} B_ {j}} a
w i = ∑ j = 1 m b i , j B j . { displaystyle w_ {i} = součet _ {j = 1} ^ {m} b_ {i, j} B_ {j}.} Výstup Algoritmus počítá základnu součet U + Ž { displaystyle U + W} a základna průsečík U ∩ Ž { displaystyle U cap W} .
Algoritmus Algoritmus vytváří následující bloková matice velikosti ( ( n + k ) × ( 2 m ) ) { displaystyle ((n + k) krát (2 m))} :
( A 1 , 1 A 1 , 2 ⋯ A 1 , m A 1 , 1 A 1 , 2 ⋯ A 1 , m ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ A n , 1 A n , 2 ⋯ A n , m A n , 1 A n , 2 ⋯ A n , m b 1 , 1 b 1 , 2 ⋯ b 1 , m 0 0 ⋯ 0 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ b k , 1 b k , 2 ⋯ b k , m 0 0 ⋯ 0 ) { displaystyle { begin {pmatrix} a_ {1,1} & a_ {1,2} & cdots & a_ {1, m} & a_ {1,1} & a_ {1,2} & cdots & a_ {1, m } vdots & vdots && vdots & vdots & vdots && vdots a_ {n, 1} & a_ {n, 2} & cdots & a_ {n, m} & a_ {n, 1} & a_ {n, 2} & cdots & a_ {n, m} b_ {1,1} & b_ {1,2} & cdots & b_ {1, m} & 0 & 0 & cdots & 0 vdots & vdots && vdots & vdots & vdots && vdots b_ {k, 1} & b_ {k, 2} & cdots & b_ {k, m} & 0 & 0 & cdots & 0 end {pmatrix}}} Použitím základní řádkové operace , je tato matice transformována na řádkový sled . Poté má následující tvar:
( C 1 , 1 C 1 , 2 ⋯ C 1 , m ∗ ∗ ⋯ ∗ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ C q , 1 C q , 2 ⋯ C q , m ∗ ∗ ⋯ ∗ 0 0 ⋯ 0 d 1 , 1 d 1 , 2 ⋯ d 1 , m ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ 0 0 ⋯ 0 d l , 1 d l , 2 ⋯ d l , m 0 0 ⋯ 0 0 0 ⋯ 0 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ 0 0 ⋯ 0 0 0 ⋯ 0 ) { displaystyle { begin {pmatrix} c_ {1,1} & c_ {1,2} & cdots & c_ {1, m} & * & * & cdots & * vdots & vdots && vdots & vdots & vdots && vdots c_ {q, 1} & c_ {q, 2} & cdots & c_ {q, m} & * & * & cdots & * 0 & 0 & cdots & 0 & d_ {1,1 } & d_ {1,2} & cdots & d_ {1, m} vdots & vdots && vdots & vdots & vdots && vdots 0 & 0 & cdots & 0 & d_ {l, 1} & d_ {l, 2} & cdots & d_ {l, m} 0 & 0 & cdots & 0 & 0 & 0 & cdots & 0 vdots & vdots && vdots & vdots & vdots && vdots 0 & 0 & cdots & 0 & 0 & 0 & cdots & 0 end {pmatrix}}} Tady, ∗ { displaystyle *} znamená libovolná čísla a vektory ( C p , 1 , C p , 2 , … , C p , m ) { displaystyle (c_ {p, 1}, c_ {p, 2}, ldots, c_ {p, m})} pro každého p ∈ { 1 , … , q } { displaystyle p in {1, ldots, q }} a ( d p , 1 , … , d p , m ) { displaystyle (d_ {p, 1}, ldots, d_ {p, m})} pro každého p ∈ { 1 , … , l } { displaystyle p in {1, ldots, l }} jsou nenulové.
Pak ( y 1 , … , y q ) { displaystyle (y_ {1}, ldots, y_ {q})} s
y i := ∑ j = 1 m C i , j B j { displaystyle y_ {i}: = součet _ {j = 1} ^ {m} c_ {i, j} B_ {j}} je základem U + Ž { displaystyle U + W} a ( z 1 , … , z l ) { displaystyle (z_ {1}, ldots, z_ {l})} s
z i := ∑ j = 1 m d i , j B j { displaystyle z_ {i}: = součet _ {j = 1} ^ {m} d_ {i, j} B_ {j}} je základem U ∩ Ž { displaystyle U cap W} .
Důkaz správnosti Nejprve definujeme π 1 : PROTI × PROTI → PROTI , ( A , b ) ↦ A { displaystyle pi _ {1}: V krát V až V, (a, b) mapsto a} být projekcí na první komponentu.
Nechat H := { ( u , u ) ∣ u ∈ U } + { ( w , 0 ) ∣ w ∈ Ž } ⊆ PROTI × PROTI . { displaystyle H: = {(u, u) mid u v U } + {(w, 0) mid w v W } subseteq V krát V.} Pak π 1 ( H ) = U + Ž { displaystyle pi _ {1} (H) = U + W} a H ∩ ( 0 × PROTI ) = 0 × ( U ∩ Ž ) { displaystyle H cap (0 krát V) = 0 krát (U cap W)} .
Taky, H ∩ ( 0 × PROTI ) { displaystyle H cap (0 krát V)} je jádro z π 1 | H { displaystyle { pi _ {1} |} _ {H}} , projekce omezený na H .Proto, ztlumit ( H ) = ztlumit ( U + Ž ) + ztlumit ( U ∩ Ž ) { displaystyle dim (H) = dim (U + W) + dim (U cap W)} .
Algoritmus Zassenhaus vypočítá základ H . Zaprvé m sloupce této matice existuje základ y i { displaystyle y_ {i}} z U + Ž { displaystyle U + W} .
Řádky formuláře ( 0 , z i ) { displaystyle (0, z_ {i})} (s z i ≠ 0 { displaystyle z_ {i} neq 0} ) jsou zjevně v H ∩ ( 0 × PROTI ) { displaystyle H cap (0 krát V)} . Protože matice je uvnitř řádkový sled , jsou také lineárně nezávislé. všechny řádky, které se liší od nuly ( ( y i , ∗ ) { displaystyle (y_ {i}, *)} a ( 0 , z i ) { displaystyle (0, z_ {i})} ) jsou základem H , takže existují ztlumit ( U ∩ Ž ) { displaystyle dim (U cap W)} takový z i { displaystyle z_ {i}} s. Proto z i { displaystyle z_ {i}} tvoří základ U ∩ Ž { displaystyle U cap W} .
Příklad Zvažte dva podprostory U = ⟨ ( 1 − 1 0 1 ) , ( 0 0 1 − 1 ) ⟩ { displaystyle U = left langle { begin {pmatrix} 1 - 1 0 1 end {pmatrix}}, { begin {pmatrix} 0 0 1 - 1 end {pmatrix}} right rangle} a Ž = ⟨ ( 5 0 − 3 3 ) , ( 0 5 − 3 − 2 ) ⟩ { displaystyle W = left langle { begin {pmatrix} 5 0 - 3 3 end {pmatrix}}, { begin {pmatrix} 0 5 - 3 - 2 end {pmatrix}} right rangle} vektorového prostoru R 4 { displaystyle mathbb {R} ^ {4}} .
Za použití standardní základ , vytvoříme následující matici dimenze ( 2 + 2 ) × ( 2 ⋅ 4 ) { displaystyle (2 + 2) krát (2 cdot 4)} :
( 1 − 1 0 1 1 − 1 0 1 0 0 1 − 1 0 0 1 − 1 5 0 − 3 3 0 0 0 0 0 5 − 3 − 2 0 0 0 0 ) . { displaystyle { begin {pmatrix} 1 & -1 & 0 & 1 && 1 & -1 & 0 & 1 0 & 0 & 1 & -1 && 0 & 0 & 1 & -1 5 & 0 & -3 & 3 && 0 & 0 & 0 & 0 0 & 5 & -3 & -2 && 0 & 0 & 0 & 0 end {pmatrix}}.} Použitím základní řádkové operace , transformujeme tuto matici na následující matici:
( 1 0 0 0 ∗ ∗ ∗ ∗ 0 1 0 − 1 ∗ ∗ ∗ ∗ 0 0 1 − 1 ∗ ∗ ∗ ∗ 0 0 0 0 1 − 1 0 1 ) { displaystyle { begin {pmatrix} 1 & 0 & 0 & 0 && * & * & * & * 0 & 1 & 0 & -1 && * & * & * & * 0 & 0 & 1 & -1 && * & * & * & * 0 & 0 & 0 & 0 && 1 & -1 & 0 & 1 {pmatrix}}} (některé položky byly nahrazeny „ ∗ { displaystyle *} „protože jsou pro výsledek irelevantní).Proto, ( ( 1 0 0 0 ) , ( 0 1 0 − 1 ) , ( 0 0 1 − 1 ) ) { displaystyle left ({ begin {pmatrix} 1 0 0 0 end {pmatrix}}, { begin {pmatrix} 0 1 0 - 1 end {pmatrix }}, { begin {pmatrix} 0 0 1 - 1 end {pmatrix}} right)} je základem U + Ž { displaystyle U + W} , a ( ( 1 − 1 0 1 ) ) { displaystyle left ({ begin {pmatrix} 1 - 1 0 1 end {pmatrix}} right)} je základem U ∩ Ž { displaystyle U cap W} .
Viz také Reference ^ Luks, Eugene M. ; Rákóczi, Ferenc; Wright, Charles R. B. (duben 1997), „Některé algoritmy pro nilpotentní permutační skupiny“, Journal of Symbolic Computation , 23 (4): 335–354, doi :10.1006 / jsco.1996.0092 .^ Fischer, Gerd (2012), Lernbuch Lineare Algebra und Analytische Geometrie (v němčině), Vieweg + Teubner , str. 207–210, doi :10.1007/978-3-8348-2379-3 , ISBN 978-3-8348-2378-6 ^ Skupina GAP (13. února 2015), „24 matic“ , Referenční příručka GAP, vydání 4.7 , vyvoláno 2015-06-11 externí odkazy