有限域(1)——環和素域


  版權申明:本文為博主窗戶(Colin Cai)原創,歡迎轉帖。如要轉貼,必須注明原文網址

  http://www.cnblogs.com/Colin-Cai/p/9397448.html 

  作者:窗戶

  QQ:6679072

  E-mail:6679072@qq.com

  有限域,顧名思義就是有限的域,我們又稱它為Galois域(Galois Field)。

   

  

  

  說到域,首先得要講講環(ring)。

  環中存在兩種封閉的二元運算——加法和乘法。加法和乘法只是我們的稱呼,以區別兩種運算。環要滿足以下條件:

  1.環的所有元在加法上是一個交換群(Abelian Group)(滿足結合律,交換律,存在e元,這里我們稱之為0元,滿足每個元都有唯一的逆元)。

  2.環的所有元在乘法上是一個半群(即只要滿足結合律)。

  3.加法、乘法滿足左分配律和右分配律。

  

  我來舉幾個例子,比如所有的整數在加法、乘法下就是一個環。

  再來個復雜的例子,所有的實數下的n階方陣在矩陣加法和矩陣乘法下也是一個環,0元為n階0方陣。注意,這里的乘法不可交換。

  

  

 

  人類很早就認識到自然數,在慢慢歷史長河中,加減法、乘法都是很早就產生。涉及到公平性問題,又帶來了除法,於是引入了分數的概念。

  但引入了除法之后,我們可以在整數環的基礎上構造有理數域。

  我們最常見的域有理數域就是在整數環的基礎上引入除法得到的。

  

  不是所有的環都可以擴展成一個域的,有些環天生不足,比如剛才提到的矩陣環,不僅僅因為矩陣乘法不可交換,而且里面充斥着兩個非0元乘積等於0元的情況。

  比如

  

  

  這樣的元叫零因子,沒有零因子的環叫整環,比如整數環。當然整數環中有一個元素也很特殊,那就是1,1和任何整數的乘積還是那個整數本身,我們可以稱呼環中滿足這個性質的元叫1元。

  實際上,我們對於含有1元的交換整環,按照我們構造有理數域的方法都是可以構造成域的,這叫分式域。

  但我們構造Galois域的方法其實還是用的其他方法,這個以后再說。

  

  

  域的所有非0元在乘法下也是一個交換群(Abelian Group)。

  域有個重要的性質,就是特征,除0元之外的每個元的加法群周期都相同,這個周期稱之為特征。當然,對於我們的有理數來說來說,這個周期是無窮。如果域的特征不為無窮,而為整數,實際上是可以證明其只能為質數(Prime Number),這里不講如何證明。

  域有子域的概念,某個域的其中一部分元在加法、乘法上還是一個域,則這一部分元所成的域為原來域的子域。用平常的例子,我們的有理數域其實是實數域的子域,而實數域則是復數域的子域。實際上,我們的實數域、復數域有無窮多個子域。

  比如集合 {x|x=a*√2 + b, a和b是有理數} 在加法、乘法上就是一個域。

  

  每個特征下都有一個獨特的域,使得任何一個同樣特征的域都有一個子域與之同構,則為素域,有理數域就是一個素域。

  我們既然考慮有限域,那么針對的是特征為質數的域。

  

  素域

 

  實際上,特征為質數的素域是很容易構造的,假如說特征為p,素域的元素個數則為p,設為0,1...p-1

  素域內的加法定義為模p加法,也就是

      (a+b)%p

  素域內的乘法定義為模p乘法,也就是

  (a*b)%p

  我們很容易證明這是一個交換環,而且存在1元。

  對於除法,

  a/b = a*bp-2

  這里的乘法和冪用的都是模p乘法

 

  我們很容易寫一個scheme程序來看一個特征p素域中所有的+-*/運算:

  

;特征為p的素域的加減乘除

;加法
(define (addp p a b)
 (if (>= (+ a b) p) (- (+ a b) p)
  (+ a b)
 )
)

;減法
(define (subp p a b)
 (addp p a (if (zero? b) 0 (- p b)))
)

;乘法
(define (mulp p a b)
 (remainder (* a b) p)
)

;求逆
(define (invp p a)
 (define (pow n a b)
  (cond
   ((zero? n) a)
   ((zero? (remainder n 2)) (pow (quotient n 2) a (mulp p b b)))
   (else (pow (quotient n 2) (mulp p a b) (mulp p b b)))
  )
 )
 (pow (- p 2) 1 a)
)

;除法
(define (divp p a b)
 (mulp p a (invp p b))
)

 

  zero?這個運算有的scheme未必有,定義如下

  (define zero? (lambda (x) (= 0 x)))

 

  對於特征5的素域,我們運算一下所有的加減乘除:

 

;特征為5的素域
(define p 5)

;湊出所有的有序對
(define (list-all)
 (define (f x y)
  (let ((a (car x)) (b (cdr x)) (c (cons x y)))
   (cond
    ((> b 0) (f (cons a (- b 1)) c))
    ((> a 0) (f (cons (- a 1) (- p 1)) c))
    (else c)
   )
  )
 )
 (f (cons (- p 1) (- p 1)) '())
)

(for-each
 (lambda (x)
  (if (zero? (cdr x))
   (displayln (format "~a+~a=~a ~a-~a=~a ~a*~a=~a"
               (car x) (cdr x) (addp p (car x) (cdr x))
               (car x) (cdr x) (subp p (car x) (cdr x))
               (car x) (cdr x) (mulp p (car x) (cdr x))
               ))
   (displayln (format "~a+~a=~a ~a-~a=~a ~a*~a=~a ~a/~a=~a"
               (car x) (cdr x) (addp p (car x) (cdr x))
               (car x) (cdr x) (subp p (car x) (cdr x))
               (car x) (cdr x) (mulp p (car x) (cdr x))
               (car x) (cdr x) (divp p (car x) (cdr x))
               ))
  )
 )
 (list-all)
)

 

運算,得到

0+0=0 0-0=0 0*0=0
0+1=1 0-1=4 0*1=0 0/1=0
0+2=2 0-2=3 0*2=0 0/2=0
0+3=3 0-3=2 0*3=0 0/3=0
0+4=4 0-4=1 0*4=0 0/4=0
1+0=1 1-0=1 1*0=0
1+1=2 1-1=0 1*1=1 1/1=1
1+2=3 1-2=4 1*2=2 1/2=3
1+3=4 1-3=3 1*3=3 1/3=2
1+4=0 1-4=2 1*4=4 1/4=4
2+0=2 2-0=2 2*0=0
2+1=3 2-1=1 2*1=2 2/1=2
2+2=4 2-2=0 2*2=4 2/2=1
2+3=0 2-3=4 2*3=1 2/3=4
2+4=1 2-4=3 2*4=3 2/4=3
3+0=3 3-0=3 3*0=0
3+1=4 3-1=2 3*1=3 3/1=3
3+2=0 3-2=1 3*2=1 3/2=4
3+3=1 3-3=0 3*3=4 3/3=1
3+4=2 3-4=4 3*4=2 3/4=2
4+0=4 4-0=4 4*0=0
4+1=0 4-1=3 4*1=4 4/1=4
4+2=1 4-2=2 4*2=3 4/2=2
4+3=2 4-3=1 4*3=2 4/3=3
4+4=3 4-4=0 4*4=1 4/4=1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM