• 沒有找到結果。

積木結構的計算複雜性理論

N/A
N/A
Protected

Academic year: 2022

Share "積木結構的計算複雜性理論"

Copied!
10
0
0

加載中.... (立即查看全文)

全文

(1)

積木結構的計算複雜性理論

王則柯

1981 年的 《美國數學會通報》 (Bull.

AMS) 上, 發表了伯克利加州大學教授斯梅 爾 (S. Smale) 的論文 「代數基本定理與計 算複雜性理論」, 討論用牛頓方法計算多項式 零點的計算複雜性問題。 斯梅爾的結果可以 有條件地簡述為: 用牛頓方法為任一 n 階複 係數多項式找到一個零點的成本 (以牛頓疊 代次數衡量), 隨著多項式階數 n 的增長而 增長的速率不超過 n

9

7

, 這裡 µ 是允許論 斷失敗的概率, 0 < µ < 1。

兩年以後, 1983 年 4 月, 筆者應斯梅爾 教授的邀請, 在伯克利加州大學報告了下述 結果: 用庫恩 (Kuhn) 方法算出任一 n 階 複係數多項式一個零點的成本 (以多項式計 值次數衡量), 隨著多項式階數 n 的增長而 增長的速率不超過 n

2

log(n/ε), 這裡 ε > 0 是零點數值計算的精度要求。

數值計算方法的計算複雜性問題, 是應 用數學當今令人矚目的發展。 本文以斯梅爾 的論文和我們的 n

2

log(n/ε) 的工作為主, 介紹計算複雜性討論的若干進展。

代數基本定理與計算複雜性問題

大家知道, 形如 f (z) = C

n

z

n

+ C

n−1

z

n−1

+ . . . + C

1

z + C

0

的函數, 稱為 n

階複係數多項式, 這裡 n 是自然數, z 是複變 量, C

0

, . . . , C

n

都是複常數, 並且 C

n

6= 0。

如果一個複數 ξ 使得用 z = ξ 代入這個多 項式後多項式的值為 0, 即 f (ξ) = 0, 就說 z = ξ 是多項 f (z) 的一個零點, 或一個根。

在尋求零點或計算零點的時後, 我們可 以先用 C

n

6= 0 除整個多項式, 所得的多項 式 g(z) = z

n

+ (C

n−1

/C

n

)z

n−1

+ . . . + (C

1

/C

n

)z + (C

0

/C

n

) 的零點與原來多項式 f (z) 的零點一致。 因此, 今後我們只討論形 如

f (z) = z

n

+ a

n−1

z

n−1

+ . . . + a

1

z + a

0

的所謂首一多項式 (monic polynomial), 其 中 z 是複變量, a

0

, . . . , a

n−1

都是複常數。 自 然數 n 仍是多項式的階。

代數基本定理說, 任一 n 階複係數多 項式必有一個複零點。 或者採用更強的形式:

任一 n 階複係數多項式, 正好有 n 個複零 點。 數學史上有一些經典的論題, 它們雖然已 經被解決, 卻仍然一再喚起人們的熱情, 去從 事溫故而創新的工作。 代數基本定理就是這 樣一個論題。 大家知道, 天才的德國數學家高 斯, 從1799年到1850年前後相距達半個世紀

3

(2)

的時間裡, 曾經提出代數基本定理的四個證 明。 更早, 還可以追溯到牛頓、 麥克勞林、 達 朗貝爾、 歐拉和拉格朗日。 但是必須指出, 即 使是高斯的證明, 在嚴格的意義上說來, 也是 有缺陷的。

近幾十年來, 人們致力於代數基本定理 的構造性的證明 (constructive proof), 取 得了很大的成功。 庫恩算法 (見本刊第 17 卷 第 3 期 「多項式方程求根的魔術植物栽培算 法」) 就是一個例子。 構造性是什麼意思呢?

以判斷“有沒有零點”的所謂零點存在性問題 為例, 構造性的討論方法是: 具體 (設計一種 方法) 找出零點來, 說明它是存在的。 非構造 性的討論方法則往往是“反證法”: 假定零點 不存在, 然後引出與已知事實的矛盾。 打個比 方: 面對 3 隻雛雞, 閉著眼睛你也可以判斷 其中至少有 2隻是同性的, 否則會與雞只有雌 雄兩個性別的事實矛盾。 這樣一個判斷過程 就是非構造性的。 倘若你是一個辨認雛雞性 別的行家, 實際辨認出其中有 2 只是雄的, 並 由此得出存在一對同性雛雞的結論, 這樣一 個判斷過程就是構造性的。 反證法在邏輯上 常常非常漂亮, 但是帶給人們的信息較少。 相 反, 構造性的工作雖然有時比較繁複, 卻不但 肯定了“存在”的事實, 還指示怎樣把這個“存 在”找出來。 所以, 隨著社會和科學的發展, 各 方面對數學的要求, 越來越傾向於構造性的 解決辦法。 面對我們的多項式零點問題, 構造 性的工作就是要提出尋求或計算零點的一種 方法或一種算法。

既然我們強調構造性工作的實際應用價 值, 那麼, 算法的效率如何, 就是一個十分重

要問題。 如果有人提出一種算法, 並且在數學 上證明了按照這種算法一定可以找到問題的 解, 但是可能要在最新的電子計算機上花費 10

10

年的時間, 你對這種樣子的算法, 有什 麼感覺呢? 說不定會啼笑皆非。

時間就是成本。 所以算法效率的討論, 也就是計算成本的討論。 一種算法, 通常是 對於某種類型的問題提出來的。 問題的規模 有大有小。 問題的規模越大, 解決問題的成 本一般也越高。 按照計算複雜性理論 (com- putational complexity theory), 如果計算 成本隨著問題規模的增長而增長的關係是多 項式的 (exponentially), 這種算法就被認為 是實際上難以接受的。 如果計算成本隨著問 題規模的增長的關係是多項式的, 這種算法 將被認為是實際可行的, 並被稱作多項式時 間算法 (algorithm of polynomial time)。

以當前世界上電子計算機對付得最多的線性 規畫 (linear programming) 問題為例, 單 純形方法 (simplex method) 是一種人們 樂於採用的方法。 但是有人舉出例子, 說明 在最壞的情況下, 單純形方法的計算成本是 指數式增長的。 1978 年, 蘇聯數學家哈奇安 (Khachian) 提出線性規劃問題的一種多項 式時間算法, 一時成為 「紐約時報」 的頭版新 聞。 不久, 斯梅爾教授宣布, 概率地說 (prob- abilistically), 即除去一部分最壞的和很壞 的情形以外, 單純形方法的計算成本隨問題 規模增長而增長的關係是線性的。 大家知道, 線性關係, 是最好的一類多項式關係。 又過了 不久, 旅美印度數學家卡馬卡 (Karmarkar) 提出在許多情況下會比單純形方法優越的內

(3)

點算法。 這些都是計算複雜性理論方面令人 驚嘆的進展。

牛頓方法與逼近零點

牛頓方法 (Newton method) 是一種 廣泛使用的零點計算方法。 對於複平面上函 數 f (z) 的零點計算問題, 牛頓方法可以很簡 單地表述為: 在複數平面上取定一點 z

0

, 歸 納地定義

z

k+1

= z

k

− f(z

k

)/f

(z

k

), k = 0, 1, 2, . . . . 每算一個 z

k+1

, 就叫做一次牛頓疊代 (New- ton iteration), 而原來的 z

0

, 叫做牛頓方法 的初值。

面對零點的數值計算, 人們常常首先想 到是否可以用牛頓方法, 這至少有兩個原因:

第一, 牛頓方法已經有三百年的歷史, 似已在 數學家和數值計算專家的頭腦中生根。 人們 對牛頓方法有過大量研究, 雖然情況至今未 能說完全令人滿意。 人們在使用牛頓方法方 面積累了豐富經驗, 雖然失敗還是常常會發 生。 第二, 牛頓方法的表述特別簡單, 入門也 就顯得特別容易。 只要懂得一點一元函數微 分學的概念, 一個從未接觸過牛頓方法的人, 也可以馬上用牛頓方法取得他的第一批計算 結果。

牛頓方法的表述固然簡單, 但它的計算 收斂性 (convergence) 討論卻相當麻煩。 例 如, 算到某一步, 得到的 z

k

使 f

(z

k

) = 0, 疊代就做不下去了。 至於初值 z

0

的選取, 更 是一個嚴重的問題。 初值選得好, 計算就收斂 得快。 初值選得不好, 收斂就慢, 甚至根本不

收斂。 所以, 牛頓方法又是一種難以把握的方 法。

重要的是找到一個足夠好的初值。 什 麼叫足夠好的初值? 斯梅爾提出了逼近零點 (approximate zero) 的概念: 如果 z

0

使得 牛頓疊代對所有 k = 0, 1, 2, . . . , 都有意義, z

0

, z

1

, z

2

, . . . 收斂到 f (z) 的一個零點, 並 且對所有 k 都成立 |f(z

k+1

/f (z

k

)| < 1/2, 就稱 z

0

是 f (z) 的一個逼近零點。 換言之, 逼近零點的意思是, 從這點開始牛頓疊代收 斂到函數的一個零點, 並且每次疊代使函數 值的絕對值衰減一半以上。 可見, 逼近零點真 是比較好的初值。 當用牛頓方法進行零點計 算的時候, 一旦找到了逼近零點, 剩下的工作 就不多了。

概念明確了, 接下去就要確立達到逼近 零點的條件, 並設計首先把逼近零點找到的 方法。

拿多項式來說, 使得多項式 f (z) 的導 函數 f

(z) 的值為零的點, 稱作多項式的臨 界點 (critical point), 這點的多項式值, 稱 作多項式的臨界值 (critical value)。 把 n 階 多項式的所有 n − 1 個臨界值的絕對值按大 小排列起來, 取最小的一個, 記作 ρ = ρ(f ), 不妨稱作多項式 f (z) 的表徵值。 運用單複變 函數中與比勃巴赫–德布蘭傑 (Bieberbach- De Branges) 定理有關的結果, 斯梅爾證明 了:

如果|f(z

0

)| < ρ(f)/13, z

0

就是多項 式 f (z) 的一個逼近零點。

這就給出了判別逼近零點的一個充分條 件。 這個條件要能起作用, 必須 ρ(f ) > 0。

(4)

根據 ρ(f ) 的定義, ρ(f ) > 0 是多項式沒 有重零點 (重根) 的特徵。 另一方面, 如果某 點多項式值為 0, 這點就已經是多項式的零點 了。 對於一個沒有重零點的多項式 f (z), 從 複數 z 到複數 w 平面的變換 w = f (z), 在 每個零點附近都是近似線性的。 所以 w 平面 上由 |w| < ρ(f)/13 確定的圓域的原像, 是 z 平面上以多項式 f (z) 的 n 個零點為中心 的 n 個小的近似圓域。 由此可見, 斯梅爾的 充分條件, 是在 z 平面上確定以多項式零點 為中心的 n 個近似圓形的快速收斂區, 見圖 1。 一旦進入了快速收斂區, 牛頓方法的收斂 速度就會很快。

.. .. . .. .. . . .. . .. . . . . .. . . . . . . . . . . . . . . . . . . . . .. . . . . .. . .. . . .. .. . .. .. . .. .. .. .. . .. .. .. . .. .. . ...

ξ

1

. .. . .. . .. . . . .. . . .. . . . . . . . . .. . . . . . . .. . . . . . . . . .. . . . .. . . .. . .. . .. . .. .. .. . .. .. .. .. . .. .. .. . .. .. . .. .. ...

ξ

2

. .. . . . .. . . .. . .. . .. . .. .. .. .. .. .. .. .. .. . .. .. . .. .. . ...

ξ

n

.. ... . ..

. ... .. .

.. .. . . .. .. ...

圖 1. 快速收斂區

斯梅爾的主要結果

現在考慮如何具體把逼近零點找出來。

設想把牛頓疊代的步長適當縮小, 變得 精細一些, 可望有所幫助。 斯梅爾在牛頓疊代 公式中引入一個步長參數 h, 0 < h ≤ 1。 從 複平面的一點 z(0) 開始, 歸納地定義 z(k+1) = z(k)−h · f (z(k))

f

(z(k)), k = 0, 1, 2, . . . 希望因為適當選取步長參數 h, 經過從 z(0) 開始的若干步參數 h 的牛頓疊代, 可以到達 多項式的一個逼近零點。

這樣一來, z(0) 又是一種初始點。 z(0) 選得好, 可以較快找到逼近零點, 即可以較快

進入快速收斂區。 z(0) 選得不好, 說不定一 直找不到逼近零點。 怎樣表徵初始點 z(0) 與 多項式 f (z) 的關係的好壞呢? 斯梅爾引進 參數 K, 在個別次要的技術限制之下, 定義 K 為各個臨界值與初始點多項式值 f(z(0)) 之比的幅角的最小絕對值。 這個 K 當然是 同時依賴於 f (z) 和 z(0) 的, 即 K = K(f, z(0))。 我們將要知道, 如果 ρ(f) 和 K(f, z(0)) 都大於 0, 初始點 z(0) 對於多 項式 f (z) 來說, 就是不錯的。 事實上, 斯 梅爾在進一步引進參數 ζ = ζ(f, z(0)) = 13|f(z(0))|/ρ(f) 之後, 證明了

定理: 若多項式 f (z) 和初始點 z(0) 符 合 ρ(f ) > 0 和 K(f, z(0)) > 0 的條件, 則 取

h = sin(K/2)

4(3 sin(K/2) + log ξ),

從 z(0) 開始的以 h 為步長參數的參數牛頓 疊代都有意義, 並且在

s = 4(3 + log ζ sin(K/2))

2

步之內到達多項式 f (z) 的一個逼近零點。

面對一個業已確定的多項式, 可以討論 某個初始點取得好還是不好。 反過來, 面對 一個業已固定的初始點, 可以討論某個多項 式 (與這個給定的初始點匹配得) 好還是不 好。 上面講過, 我們只須討論首一式多項式。

一個形如 f (z) = z

n

+ a

n−1

z

n−1

+ . . . + a

1

z + a

0

的首一多項式被 n 個複常數 a

0

, a

1

, . . . , a

n−1

完全確定。 反過來也一樣。

因此我們可以把由所有 n 階首一多項式組 成的空間, 與複 n 維歐氏空間 C

n

等同看

(5)

待, 稱為 n 階複係數多項式空間 (space of monic polynomials of degree n)。 斯梅 爾取定 z(0) = 0, 即老是以原點為初始點, 然後利用代數幾何和積分幾何的知識, 給對 於這個初始點來說是最壞的和較壞的多項式, 在整個多項式空間中所佔的體積作一個估計。

全空間的體積無窮, 比較難以把握。 但是由

|a

0

| < R, |a

1

| < R, . . . , |a

n−1

| < R 所 確定的複 n 維圓柱 P (R) 的體積是一個有 限數 (πR

2

)

n

, 就容易把握得多。 這個 n 維圓 柱由所有係數的絕對值都小於 R 的一切多項 式組成。 把最壞的和較壞的多項式從所考慮 的空間 (複 n 維圓柱) 中挖去。 最壞的當然 要挖去。 較壞的多項式挖去越多, 剩下的多項 式就越好, 這樣從 z(0) = 0 開始的參數牛 頓疊代就可以越快進入快速收斂區, 即可以 越快到達一個逼近零點 (圖2)。 若挖去部分的 體積與全空間 (複 n 維圓柱) 的體積之比為 µ, 0 < µ < 1, 那麼如果對剩餘的部分得到 一個一致的結論 A, 我們也可以說結論 A 對 空間中任一多項式成立的概率 (probability) 為 1 − µ。 正是這樣的考慮, 引導斯梅爾得到 他的主要結果:

.

... .

.. . .. . . .. . . .. . .. . . .. . .. . .. .. . .. . .. .. . .. .. . .. .. .. .. . .. .. .. .. .. .. .. .. . .. .. .. .. . .. .. .. . .. .. . .. .. . .. .. . .. ...

. .. .. .. .. .. ...

. .. . . . . .. .. ...

z (0) = 0

.. ...

... . . .. .. . .. . . .. . .

牛頓疊代

參數牛頓疊代

ξ

z 0

圖 2. 斯梅爾方案

定理: 給定 n 及 0 < µ < 1。 取

σ = (µ/150)

3 /2

/(n + 2)

2

。 對複 n 維圓柱 P (R) 中的任一多項式 f (z), 以下事實成立 的概率至少是 1 − µ: 只要適當選取步長參 數 h, 就可以保證從 z(0) 開始的參數牛頓疊 代在

s = 4



3 + log(15/σ)8R σ

2

 2

步之內達到 f (z) 的一個逼近零點。

定理中的 s 的表達式頗為複雜。 對 R = 1 情況作耐心的換算, 可以得到 s = (100(n + 2))

9

7

的結果, 即: 給定 n 和 0 < µ < 1, 對於係數 a

0

, a

1

, . . . , a

n−1

的絕 對值小於 1 的 n 階首一多項式, 從 z(0) = 0 開始的步長適當的參數牛頓疊代在 s = (100(n + 2))

9

7

步內進入多項式的快速收 斂區的概率至少是 1 −µ。 這就是本文開始時 以簡要形式介紹的斯梅爾的結果。

斯梅爾曾因微分拓樸學方面證明高維的 邦加萊猜測而在 1966 年獲得國際數學界的 最高榮譽菲爾茲獎。 隨後, 他和其他學者一 起開創動力系統 (dynamical systems) 的 研究。 近年來, 他從微分拓樸和動力系統的高 度, 最初是基於數理經濟學 (mathematical economics) 問題的背景, 致力於計算方法和 計算複雜性理論的研究, 連續發表了一系列 引起純粹數學界、 應用數學界和數理經濟學 界注意的論文。 上述 「代數基本定理與複雜性 理論」, 是其中很有份量的一篇。

庫恩多項式零點算法

庫恩多項式零點算法, 只有二十年的歷 史。 鑒於本刊十七卷三期已有詳盡介紹, 現在

(6)

我們只作簡單的複述。 算法的敘述, 由以下三 部分組成:

1. 半空間 C[−1, +∞) 的一種單純剖分 記 C 為複數平面, C

k

= C × {k}, k = −1, 0, 1, 2, . . .。 記 z = x + iy, 而

Z

為整數集。 用四族平行直線 {z ∈ C : x = p, p ∈

Z

} {z ∈ C : y = p, p ∈

Z

}

和 {z ∈ C : y = (2p + 1) ± x, p ∈

Z

} 分割 C

−1

平面, 而對 k = 0, 1, 2, . . . , 用四 族平行直線

{zǫC : x = 2

−k

p, p ∈

Z

} {zǫC : y = 2

−k

p, p ∈

Z

} 和 {zǫC : y = 2

1−k

p ± x, p ∈

Z

} 分割 C

k

平面。 在這個基礎上, 將每兩層平面 之間的空間, 分割成一個個四面體。

C

−1

的方格和 C

0

的方格上下相對, 它們所界定的方塊被分成 5 個四面體。 對於 k = 0, 1, 2, . . . , C

k

的一個方格和 C

k

+1 的 4 個方格上下相對, 它們所界定的方塊被分成 14 個四面體。 這些方塊將稱為基本方體。

2. 整數標號法

對於 k = 0, 1, 2, . . . , C

k

上的格點 z 的整數標號 l(z) 由

l(z) =

 

 

 

 

 

 

1, 若 f (z) = 0 或

π 3

≤arg f(z)≤

π 3

, 2, 若

π 3

< arg f (z) ≤π, 3, 若 −π <arg f(z)<−π/3,

確定, 這裡, 非 0 複數幅角取值範圍規定為 (−π, π]。 對於 C

−1

上的格點, 用 z

n

代替 f (z) 按上式標號。

3. 同標號頂替算法

取 m 為不小於 3(1 +√

2)n/4π 的最 小整數。 在 C

−1

平面上以原點為中心的邊長 2m 的方塊 Q

n

的邊 ∂Q 上, 按照逆時針方 向, 正好有 n 條稜其端點標號由 1 到 2。 從這 n 條 (1,2) 稜出發, 向方塊 Q

n

裡面走, 按照 遇到 (1,2) 稜就穿過去的規則, 可以找到 n 個頂點標號為 (1,2,3) 的完全標號三角形。

從 C

−1

上這 n 個完全標號三角形出發, 計算同處於四面體的第四個頂點的標號, 算 出是什麼標號, 就用它頂替同標號的那個頂 點。 這樣計算下去, 就可以找到多項式 f (z) 的全部 n 個零點。 算法敘述可看本刊十七卷 三期的圖, 那裡還給出證明大意。

如果說庫恩算法的敘述不像牛頓方法那 麼簡單, 它的使用卻方便得多。 不管需要計算 零點的首一多項式是怎樣的, 只要把多項式 的階數 n 和複係數組 a

0

, a

1

, . . . , a

n−1

以及 零點計算的精度要求 ε 輸入機器, 算法就可 以按照精度要求把多項式的 n 個零點逐一算 出來。

積木結構的成本估計

算法效率的討論, 不是事後的計算成本 核算, 而是在算題之前, 預先估計計算成本是 多少。

牛頓方法的效率, 用所需的牛頓疊代的 次數來衡量。 庫恩算法的效率, 可以用所需的 同標號頂替的次數衡量。 每次頂替, 算一次

(7)

f (z)。 因此, 也可以說是用多項式 f (z) 計值 次數為尺度, 討論庫恩算法的效率。 這裡要注 要, 每次牛頓疊代, 包含 f (z) 和 f

(z) 兩個 多項式計值。

圖 3. 計算一個零點的四面體塔 從 ∂Q 的 (1,2) 稜開始的庫恩算法計 算, 在方塊 Q

n

內平面搜索到完全標號三角 形後, 就向“空中”發展, 在四面體中穿行, 每 穿過一個四面體, 就要計一次 f (z), 做一次 同標號頂替。 我們知道, 每個四面體只允許計 算路徑通過一次。 所以, 計算的進行, 可以看 作是四面體的不斷堆砌。(圖 3) 如果是成本核 算, 那麼只要數一下這 n 座四面體體塔由多 少四面體組成。 但是現在要做的是成本估計, 那麼可以先把計算可能走到的範圍確定下來, 然後數一下在這個範圍之內, 四面體的數目。

這是成本討論的指導思想。

按照上述思想, 庫恩證明了

引理1. 記 a = max{|a

0

|, |a

1

|, . . . , |a

n−1

|}, 記 r = max{3√

2(2+π)n/4π, 1+na/(n−

1)}, 再令 R = r +√

2, 那麼完全標號三角 形和原點軸 {0} × [−1, +∞) 的距離都小於 R。

按照上述思想, 我們證明了

引理2: k ≥ 0 時, C

k

平面上完全標號三角 形任一頂點與多項式某個零點的距離不超過

−√

2(1 + 3n/4)/2

k

因為計算經過的四面體都由兩個完全標 號三角形張成, 所以依照上述兩個引理, 計算 可能經過的四面體, 全在一個半徑為 R 的底 座圓台和 n 座圓台階梯 (可以相重) 之內, 每 一節圓台階梯的半徑是 √

2(1 + 3n/4)/2

k

。 n 座四面體塔都在這個由一個底座圓台和 n 座圓台階梯所組成的算法的可能區域內。

圖 4. 算法的可能區域

做到現在, 剩下只須把算法可能區域中 的四面體 (不管計算是否經過) 的數目算出來 就可以了。

底座圓台的體積是 πR

2

, 頂多包含 πR

2

個 C

−1

和 C

0

之間的基本方體, 而每個基本 方體被分割成 5個四面體, 所以底座圓台所包 含的四面體的數目不超過 5πR

2

(8)

在 C

k

和 C

k+1

之間的一節階梯圓台的 體積是 π(√

2(1 + 3n/4)2

−k

)

2

, 相應層次的 基本方體的體積是 2

−2k

, 而每個方體被分割 成 14 個四面體, 所以每節圓台包含的四面體 的數目是 14π(√

2(1 + 3n/4)2

−k

)

2

/2

−2k

= 28π(1 + 3n/4)

2

。這裡 k 消失了, 是因為階 梯圓台越少, 基本方體和四面體也越小, 比例 完全一樣。

ε 是零點計算的精度要求, 那麼按照引 理 2, 記 K = ⌈log

2

(√

2(1 + 3n/4)/ε)⌉ 為 不小於 log

2

(√

2(1 + 3n/4)/ε 的最小整數, 知道圓台階梯在平面 C

k

截斷即可。 這時算 得的完全標號三角形的任一頂點與多項式的 零點的距離在

√2(1 + 3n/4)/(√

2(1 + 3n/4)/ε) = ε 之內, 已經達到精度要求。 這樣, n 座高 為 K 的圓台階梯所包含的四面體的數目不 超過

n28π(1 + 3n/4)

2

⌈log

2

(√

2(1 + 3n/4)/ε)⌉。

總結以上, 我們得到

定理: 用庫恩算法按精度要求 ε 算出 n 階首一多項式 f (z) 全部 n 個零點所需要的 多項式 f (z) 計值次數不超過

π[5R

2

+ 28n(1 + 3n/4)

2

⌈log

2

(√

2(1 + 3n/4)/ε)⌉。

如果問算出一個零點的平均成本, 那麼 上式應當除以 n。 當 R = 1 即 |a

0

|, |a

1

|, . . . , |a

n−1

| 都不超過 1 時, 上式可以換算成 63(n + 1)

2

⌈log

2

(n/ε)⌉。 這就是本文開頭說 的 n

2

log(n/ε)。

引理的初等證明

上述兩個引理的證明極其初等, 值得向 非專門家介紹。 首先, 注意複數的幅角關係, 畫圖就可證明:

命題: 規定複數幅角取值範圍為 (−π, π]。

那麼, 若複數 w 符合 |w| < 1, 就必有

| arg(1 + w)| ≤ (π/2)|w|。

引理1 的證明: 因為三角形稜長不超過

√2, 所以有一頂點與原點距離超過 R 的三 角形, 三頂點與原點的距離都要超過 r。 下面 只須證明這樣的三角形不是完全標號三角形。

我們不討論 n = 1 的平凡情形。

頂點均可表成 (z, k), k 是不小於 −1 的整數。 設 (z

1

, k

1

), (z

2

, k

2

) 是上述三角形 的兩個頂點。 若 k

1

, k

2

> −1, 兩點都由 w = f (z) 計算標號。 改寫

f (z) = z

n

(1 + a

n−1

z + . . . + a

1

z

n−1

+ a

0

z

n

)

= z

n

(1 + g(z))。

因為 |z

1

| > r, |z

2

| > r, 就有

|g(z

2

)|

≤ |a

n−1

|/r + . . . + |a

1

|/r

n−1

+ |a

0

|/r

n

≤ a(1/r + . . . + 1/r

n−1

+ 1/r

n

)

< a/(r − 1) ≤ (n − 1)/n,

|g(z

1

) − g(z

2

)|

≤ |a

n−1

| |1/z

1

− 1/z

2

| + . . . +|a

0

||1/z

n 1

− 1/z

2 n

|

≤ a|z

1

−z

2

|(1/r

2

+2/r

3

+. . .+n/r

n+1

)

<√

2a/(r − 1)

2

≤√

2(n − 1)/n(r − 1)

≤√

2(n − 1)4π/3n√

2(2 + π)(n − 1)

= 4π/3(2 + π)n,

(9)

g(z

1

)−g(z

2

) 1+g(z

2

)

≤ 4π

3(2+π)n

.

(1−n − 1 n )

= 4π

3(2 + π) < 1。

於是, 記 w

1

= f (z

1

), w

2

= f (z

2

), 由命題 得

argw

1

w

2

=

arg f (z

1

) f (z

2

)

=

argz

n 1

(1 + g(z

1

)) z

n 2

(1 + g(z

2

))

argz

n 1

z

n 2

| +

arg(1 + g(z

1

) − g(z

2

) 1 + g(z

2

) )

≤ n

arg z

1

z

2

2

g(z

1

) − g(z

2

) 1 + g(z

2

)

≤ n√ 2 3√

2(2+π)n/4π+π 2· 4π

3(2+π)=2π 3 。 當 k

1

和 k

2

有一個或兩個都是 −1 時, 更容 易得

arg(w

1

/w

2

)

< 2π/3, 這是因為可以 用 w = z

n

代替 w = f (z)。

既然三頂點在 w 平面的像, 兩兩之間對 原點的張角小於 2π/3, 那麼依標號法, 三角 形不是完全標號三角形。

引理2 的證明: 因為 C

k

平面上三角形 任兩頂點的距離不超過 √

2/2

k

, 我們只須證 明完全標號三角形必有一頂點與多項式某零 點的距離不超過 3nδ/4, 這裡 δ 就是等腰直 角三角形的斜邊長, δ =√

2/2

k

。 亦只討論 n > 1 的情形。 改寫 f (z) = (z − ξ

1

) · (z − ξ

2

) · · · (z − ξ

n

),

這裡 ξ

1

, ξ

2

, . . . , ξ

n

是由代數基本定理 保證的 n 個零點。

設 C

k

平面上某三角形 {z

1

, z

2

, z

3

} 三 頂 點 與 多 項 式 所 有 零 點 的 距 離 都 大 於

3nπ/4, 那麼對 j = 1, . . . , n, 有

z

2

− z

1

z

1

− ξ

j

< δ

3nπ/4 = 4 3n < 1。

於是按照前述命題, 記 w

i

= f (z

i

), i = 1, 2, 3, 就有

arg w

2

w

1

= | argf (z

2

) f (z

1

)

=

arg (z

2

− ξ

1

) · · · (z

2

− ξ

n

) (z

1

− ξ

1

) · · · (z

1

− ξ

n

)

arg z

2

−ξ

1

z

1

−ξ

1

+. . .+

arg z

1

−ξ

n

z

1

−ξ

n

=

arg(1 + z

2

− z

1

z

1

− ξ

1

)

+ . . . +

arg(1 + z

2

− z

1

z

1

− ξ

n

)

≤π 2

z

2

− z

1

z

1

− ξ

1

+ . . . + π 2

z

2

− z

1

z

1

− ξ

n

< nπ 2

4 3n = 2

3π。

同樣, | arg(f(z

3

)/f (z

2

))|<2π/3,

| arg(f(z

1

)/f (z

3

))| < 2π/3。 可見, f(z

1

), f (z

2

), f (z

3

) 在 w 平面上兩兩對原點的張 角都小於 2π/3, 所以 {z

1

, z

2

, z

3

} 不可能是 完全標號三角形。

庫恩算法與逼近零點

斯 梅 爾 關 於 牛 頓 方 法 的 成 本 估 計 是 n

9

7

, 我們關於庫恩算法的成本估計是 n

2

log(n/ε)。 美中不足的是參數不完全一致, 分別為 n, µ 和 n, ε。 為使參數完全一致, 我 們令庫恩遷就牛頓, 試用庫恩算法為多項式 先尋找逼近零點, 雖然逼近零點的概念對於 庫恩算法原來並無意義, 因為庫恩算法是任 何情況下一定成功的算法。

(10)

逼近零點概念是為牛頓方法而建立的, 只對沒有重零點的多項式有效。 如果有重零 點, ρ(f ) = 0, 那麼按照

f (z

0

)

< ρ(f )/13 確定的快速收斂區根本不存在。 因此, 必須不 顧 ρ(f ) = 0 和 ρ(f ) 太小的情形。 對於剩下 的 ρ(f ) 不太小的多項式, 設有常數 ρ

0

> 0 使得 ρ(f ) ≥ ρ

0

總是成立。 按照斯梅爾的充 分條件,

f (z

0

)

< ρ(f )/13 就是逼近零點 了。 既然庫恩算法可以任意接近精確零點, 何 愁在一定時刻之後不會進入快速收斂區? 按 照這個想法進行從 µ 到 ε 的換算, 可以由上 述定理推出新的

定理: 對於所有係數的絕對值均不超過 1 的 n 階首一多項式, 以下事實成立的概率 至少是 1 − µ: 利用庫恩算法, 頂多經過

200(n + 2)

3

log

2

(n/µ)

次多項式計值, 就可以為多項式找到一個牛 頓算法所需要的良好初值。

現在, n

3

log(n/µ) 和 n

9

7

, 就是參 數完全一致的比較了。 但是, 決不能因此而低 估斯梅爾的工作的意義。 我們討論的是具有 良好拓樸幾何結構的庫恩算法, 而斯梅爾對 付的是難以駕馭的牛頓方法。 牛頓方法在壞 的情形連收斂性都談不上, 更何況成本估計?

斯梅爾巧妙地排除壞的和比較壞的情況, 得 出一個出色的概率估計。 這是計算複雜性討 論從傳統的最壞情形分析進入到嶄新的概率 情形分析的開創性工作。

一定要說有什麼未臻人意的地方的話, 那就是斯梅爾設計的用參數牛頓疊代尋找逼 近零點的方法, 在徹底的意義上不完全是構

造性的。 問題在於參數 h 的選取。 不錯, 斯 梅爾給出了 h 的表達式, h 可以由 ζ 和 K 確定, 但是 ζ 和 K 又依賴於 ρ(f), 後者要 算 f (z) 的臨界值才知道, 而 f (z) 的臨界點 就是 f

(z) 的零點。 這樣, 為了構造性地解決 尋找 f (z) 零點問題, 先要找出另一個多項式 f

(z) 的零點。 所以, 這種構造性在邏輯上不 徹底。

另一方面, 對庫恩算法的成本估計, 仍大 有可以進一步精確化的餘地。 在圖 4 的可能 性區域內, 計算真正走到的, 只是很小一個部 分。 如何利用多項式的特性, 進一步改善已有 的結果, 仍然值得努力。

庫恩算法的優點是保險成功, 牛頓方法 的長處則是進入快速收斂區後收斂很快。 看 來, 兩種方法配合使用, 有可能把二者的長處 結合起來。 事實上, 採用庫恩算法先把零點的 位置大致確定, 然後改用牛頓方法迅速向精 確零點靠近, 這在理論分析和實際計算中都 是很有希望的方案。

參考文獻

1. Kuhn, H. W., in: Fixed Points: Algo- rithms and Applications,(ed. Karamr- dian, S.), Academic Press, 1977, 11-40.

2. Smale, S., Fundamental Theorem of Al- gebra and Computational Complexity Theory, Bull. AMS, 4(1981), 1-36.

3. 王則柯, 計算的複雜性, 湖南教育出版社, 1993

4. Wang Z. et al., Algebraic Systems and Computational Complexity The- ory, Kluwer Acad. Publ., 1994.

本文作者任教於中國廣州市中山大學數學 所

參考文獻

相關文件

Polya 所說的“理論上的目的”, 是指對 「啟 發法」 研究的 (一般) 模式介紹及解題心理 程序的討論。 所謂啟發法, 對 Polya 而言, 是研究 「發現」 和 「發明」 的方法和規則, 是

眾所周知: 數學結論 (命題、 定理、 公式、...) 的給出往往是數學家們深思熟慮、 甚至終 生不懈的努力使然, 而這些結論產生的方法多是由具體的抽象、 特例的推廣以及不完全歸納所

和實 變量的函數一樣, 複變函數也有單 變量和多變量的區別。 在實變量的情形, 是一 元微積分和多元微積分的區別。 在複變量的 情形, 是單複變函數和多複變函數的區別。 有 趣的是,

Haken 兩位數學家 合力解決。 以往的數學問題其證明方式都是 透 過嚴密的邏輯推論, 找出重要而關鍵的性 質再給予適當的證明。 但四色問題的證明過 程, 卻是由數理邏輯歸納出一些性質,

要將變數變換法應用在定積分上,有兩種計算方法。其中的 一種便是先計算出不定積分,在利用微積分基本定理計算其

數學家吳文俊先生認為, 有些幾何定理的證明, 不單是傳統的歐式方法難以措手, 即便是 解析法也因計算繁複而無法解決。 如果能找到一種機械化的方法比較快捷地證明幾何定理, 那

液體、 彈性體、 電漿、 星雲、· · ·等。 守恆律方 程組發展的目標是一套具普遍性的數學理論, 比如非線性波理論、 計算方法理論、 宏觀極 限理論等。 其發展過程常是經由深入研究許

Greiner 教授說: 是許多有意思, 有代表性的例子, 研究者計算例子, 全盤了 解 例子, 從中找到結構, 演繹歸納出理論; 抽象的理論應以對例子徹底的了解做基 礎, 而早在 1707 年牛頓就說過 “In learn-