計算機數學的計算理論與圖形 第一屆數苗計畫暑期營 台北市立第一女子高級中學 0..
許瑞麟 學經歷 : 台北市立建國高級中學 國立清華大學數學系學士 美國北卡羅萊納州立大學博士 美國紐澤西州 AT&T 貝爾實驗室研究員 國立成功大學數學系暨應用數學研究所教授
許瑞麟 國科會雲嘉南資賦優異高中生培育計畫共同主持人 地方 / 全國 / 國際科展評審委員 台南一中科學班計畫協同主持人 / 大學端導師 大考中心試題評鑑委員 教育部公費留學考試委員
演講摘要 傳統數學教學方法是序列式的. 先講數, 再講函數, 然後三角函數, 指數對數, 空間向量等依序進行. 課綱僅是將一些應用性的題材先教, 基本上還是序列式的. 多年來沒人質疑這些順序的合理性. 也沒有證據指出這些是好的序列. 大家多半就是教 ( 學 ) 習慣了.
演講摘要 我在高中端演講多年的觀察發現, 學生縱使因此學到數學的結構與邏輯, 卻對所學到的學問沒有感覺. 縱使學到數學的框架與技巧, 對於駕馭數學的能力還是相當薄弱. 換句話說, 這樣的數學教育, 並沒有在學生心中著根!
演講摘要 本演講提出一套以目標導向的數學教學方法, 用明確主題為討論主軸. 第一單元以加減乘除四則運算帶出計算機數學的核心概念 計算複雜度分析 (Computational Complexity). 自然而然的帶出直線, 拋物線, 指數函數, 與對數函數.
演講摘要 第二單元以最短路徑問題帶出圖論的核心概念 計數的方法 (Method of Enumeration). 自然而然的帶出排列組合的核心概念 系統性的智慧計數的方法. 讓學生從使用數學去學數學, 將 `` 學 和 `` 用 結合. 跟傳統先學數學, 日後再找機會應用數學的思維, 截然不同.
演講摘要 而且, 每一主題, 都一定要講出一個核心價值, 並且以批判性思維加以檢視. 而這是科學的最基本的精神! 我們的目標是一套全新有創見的數學教學教材與教學方法. 我們期望全面提升台灣下一代的數學素養與競爭力. 在此感謝北一女中的邀請, 同時感謝國立成功大學文教基金會支持贊助.
加減乘除四則運算
給定兩個正整數, 比如, a=, b=. 計算 a+b, a-b, axb, a/b. 這一類的題目, 大部分的學生都曾有計算錯誤的經驗. 會算但是算錯, 是一件相當可惜的事! 但是卻很少學生去正視這個問題. 0
我們可以讓學生去查資料, 或上網去 google, 很快就可以發現加減乘除四則運算, 除了國小教過的直式運算外, 從古到今有非常多不同算法. 還不包括中國傳統的珠算. 因此, 可以以計算能力做主題, 教高中生如何以科學的方式去分析各種不同加減乘除計算方法的優缺點.
a=, b= 的四則運算 這個題目是多位數 (multiple digits) 的四則運算, 是靠一系列的單位數 (single digit) 計算來完成. 比如, 計算 a+b 主要是執行 +, +, + 和 + 四次單位數加法. 會犯錯多半是 + 或 + 這種進位後, 另外產生 寫 進 和寫 進 的隱形的加法, 以心算來執行.
加法運算分析 因此, 如果妳用以下的算式, 就相對不容易犯錯.
+
+
+
+
+
+
+
+ 這裡會產生 次的進位加法
+ 以上, 直式加法總共使用 次單位數加法 與 次進位加法, 共 +=x 次單位加法
加法運算量分析 一個 n 位數加上一個 n 位數, 至多需要執行 n 次的 ( 單位數計算 ). 其中 n 次是一定要做的加法, 外含另一次的 n 位數加上 n 位數最多 n 次的進位加法.
直式乘法運算量分析 一個 n 位數乘上一個 n 位數, 例如 : *, 至多需要執行 n - 次的 ( 單位數計算 ).
x
x
x
x
x
x
x
x 位數乘上 位數, 總共使用 : 次單位乘法與 次 位數加 位數的至多 次單位加法
x 也是需要 : 次單位乘法與 次 位數加 位數的至多 次單位加法
x 也是需要 : 次單位乘法與 次 位數加 位數的至多 次單位加法
x
x
x 0 0 0
x 0 0 0
x 0 0 0
x 0 0 0 共需最多 次 位數加 位數的加法, 計算量為至多 x= 個單位數計算.
(n 位數乘 n 位數 ) n 位數 x n 位數 n+ 位數 n+ 位數 n+ 位數 n+ 位數 n+ 位數
(n 位數乘 n 位數 ) n 位數 x n 位數 n+ 位數 n+ 位數 n+ 位數 n+ 位數 每次使用至多 n( 乘 )+n( 加 )=n 次單位運算 n+ 位數
(n 位數乘 n 位數 ) n 位數 x n 位數 n+ 位數 n+ 位數 n+ 位數 n+ 位數 每次使用至多 n( 乘 )+n( 加 )=n 次單位運算 n+ 位數 共 n 次, 需要至多 n*n=n 次單位運算
(n 位數乘 n 位數 ) n 位數 x n 位數 n+ 位數 n+ 位數 n+ 位數 n+ 位數 n+ 位數 共有 n- 個綠色框, 每個框是 n+ 位數加 n+ 位數, 共需 (n-)*[(n+)]=n - 次單位運算
直式乘法運算量分析 一個 n 位數乘上一個 n 位數, 分解成 (i) n 位數乘上 位數 : 每次運算量 n, 共 n 次 至多 n (ii) 乘完以後相加 : (n-) 次的 [(n+) 位數 +(n+) 位數 ], 共 : n - (i) 及 (ii) 合併至多共需要執行 n - 次的 ( 單位數計算 ).
直式加法和直式乘法運算量比較 y=n - y=n
連加法運算分析 既然加法的運算量 ( 一次式 ) 比上乘法 ( 二次式 ) 少那麼多, 那麼像是 * 可以用 +++ + 連加 次來算會比較快嗎? ( 我們稱這種方法為連加法 )
連加法運算分析
實際電腦運算數據 使用 CPU :. GHz ( 大約每秒可計算 0^ 次加法 ) ; RAM :.0 GB 利用建構式連加法 計算 0*0 共使用了. 秒 計算 0*0 共使用了. 秒 計算 0*0 使用了 分 秒 計算 0*0 使用 分 秒
0 數字再稍大一些的話, 妳都可以贏過超級電腦! 電腦的確非常快. 但是, 計算的效率, 絕大部分是決定於所使用的方法, 而不在於使用多先進的科技!
連加法和直式乘法運算量比較 y=n*0 n y=n -
指數函數的圖形
e=. 指數函數的成長有多快? 在 x 軸上距離原點 0cm 處, 亦即 x=0, 其 y 軸的對應高度在 e 0. 0 km 冥王星 Pluto (The God of underworld) 距離地 球亦僅只有 0 km. 換言之, 以現今人類的太空科技, 是沒有辦法畫出指數函數在 x > 0 cm 之後的指數函數圖形.
近百年的氣溫變化 ( 觀測 )
百萬分之一有多小?? 一般認為地球歷史有 億年. 最古老的埃及中國文明距今 千年, 這個比例就是將近百萬分之一. 如果把地球歷史 億年縮為 年, 那麼 分鐘大約等於地球歷史的 年. 百萬分之一大約就是一年的最後 0 秒! 夏朝就是在 月 日 時 分 0 秒之後才發生. 恐龍大約在 月 日出現, 月 日中午還沒來的及過聖誕夜就滅絕了. 當我們跨年倒數時, 相當於我們從魏晉南北朝開始倒數, 每一兩秒就過一個朝代, 從隋, 唐, 五代十國, 宋, 元, 明, 清, 到現在.
目前最快的乘法算法 兩個 n 位整數相乘, 目前已知最快的算法需要的計算量是. 最慢也要 order n. 這個要利用到 Fast Fourier Transform 才算得出來的. 要在高中端學快速傅立葉轉換並非不可能. 我們可以不學理論, 但是透過好好觀察例子, 就可以看出最核心的概念是隸美孚定理和同餘概念.
目標導向式教學法的特點 因為每個人都有使用手機和計算錯誤的經驗, 卻沒料到這些經驗和學過的數學有如此密切的關連. 專注於計算效能這個議題, 可以從國小的加減乘除, 貫穿到高一的直線, 拋物線, 指對數函數, 直通研究所的傅立葉轉換. 我把這樣的學習方法稱為目標導向式. 其特點是知識進程和傳播速度極快! 而目前課本序列式法 : 缺乏明確對應的應用目標, 所舉的例子相當的偏重數學技巧訓練, 無法讓學生引起共鳴.
最短路徑法
0 上圖是一個網路, 只能沿著箭頭的方向前進 我們的問題是找出從 到 的最短路徑
0 搜尋所有可能的路徑, 一般而言有二種搜尋方法 方法一為 深度搜尋法 方法二為 廣度搜尋法
0 深度搜尋法 : 首先從網路起點
0 深度搜尋法 : 首先從網路起點 沿著其中一條路徑走到網路終點 此即為其中一條可能的路徑, 叫 P=, 路徑長度為 +++=
0 接著我們再往回搜尋直到有可以叉開的路為止
0 接著我們再往回搜尋直到有可以叉開的路為止 當從 退回 時, 結點 沒有叉路, 繼續往回退
0 接著我們再往回搜尋直到有可以叉開的路為止 當從 退回 時, 結點 沒有叉路, 繼續往回退 直到節點 時, 有叉路 ( 沿著邊 )
0 接著我們再往回搜尋直到有可以叉開的路為止 當從 退回 時, 結點 沒有叉路, 繼續往回退 直到節點 時, 有叉路 ( 沿著邊 ), 我們再從此叉路找出一條路徑 此為我們搜尋的第二條路徑 P=, 且路徑長度為 ++++=
0 重複剛剛的操作, 可以往回到結點 找到叉路, 並找到另一條路徑為 P=, 路徑長度為 +++=
0 重複剛剛的操作, 可以往回到結點 找到叉路, 並找到另一條路徑為 P=, 路徑長度為 +++= 下一個搜尋到的路徑應為 P=, 路徑長度為 +++0=
0 接著為 P=, 路徑長度為 ++++0=
0 接著為 P=, 路徑長度為 ++++0= P=, 路徑長度為 +++=
0 一開始就沿著邊 的所有可能路徑搜尋完後, 就搜尋一開始沿著邊 的路徑
0 一開始就沿著邊 的所有可能路徑搜尋完後, 就搜尋一開始沿著邊 的路徑 同樣地, 找出一條路徑, 叫 P=, 路徑長度為 ++++=
0 再來為 P=, 路徑長度為 +++=
0 再來為 P=, 路徑長度為 +++= P=, 路徑長度為 +++0=
0 再來為 P=, 路徑長度為 +++= P=, 路徑長度為 +++0= P0=, 路徑長度為 ++++0=
0 再來為 P=, 路徑長度為 +++= P=, 路徑長度為 +++0= P0=, 路徑長度為 ++++0= P=, 路徑長度為 +++=
0 再來為 P=, 路徑長度為 +++= P=, 路徑長度為 +++0= P0=, 路徑長度為 ++++0= P=, 路徑長度為 +++= P=, 路徑長度為 +++0=
0 再來為 P=, 路徑長度為 +++= P=, 路徑長度為 +++0= P0=, 路徑長度為 ++++0= P=, 路徑長度為 +++= P=, 路徑長度為 +++0=
0 從深度搜尋法可以搜尋到所有的路徑 : P=, 長 P=, 長 P=, 長 P=, 長 P=, 長 P=, 長 P=, 長 P=, 長 P=, 長 P0=, 長 P=, 長 P=, 長 P=, 長
0 用深度搜尋法可知, 此網路的最短路徑為 P=, 路徑長度為 ++++=
0 用深度搜尋法可知, 此網路的最短路徑為 P=, 路徑長度為 ++++=, 與最長路徑為 P=, 路徑長度為 ++++0=
0 廣度搜尋法 : 同樣從網路起點
0 廣度搜尋法 : 同樣從網路起點, 可發現從起點 出發, 有二條路徑可選擇, 與
0 觀察路徑, 下一個節點可能是 或
0 觀察路徑, 下一個節點可能是 或 再從路徑 往後看, 發現沒有叉路了, 此即為一個路徑 Q=, 路徑長為 +++=
0 觀察路徑, 下一個節點可能是 或 再從路徑 往後看, 發現沒有叉路了, 此即為一個路徑 Q=, 路徑長為 +++= 再從路徑 來看, 有四條叉路
0 觀察路徑, 下一個節點可能是 或 再從路徑 往後看, 發現沒有叉路了, 此即為一個路徑 Q=, 路徑長為 +++= 再從路徑 來看, 有四條叉路 從路徑 往後看, 沒有叉路了, 即為一個路徑 Q=, 路徑長為 ++++=
0 接著是 Q=, 路徑長為 +++=
0 接著是 Q=, 路徑長為 +++= Q=, 路徑長為 +++0=
0 沿著 到 後, 有二條叉路
0 沿著 到 後, 有二條叉路 這裡有二條路徑 : Q=, 路徑長為 ++++0=
0 沿著 到 後, 有二條叉路 這裡有二條路徑 : Q=, 路徑長為 ++++0= Q=, 路徑長為 +++=
0 一開始沿著 的話, 有二條路徑可以選擇 : 與
0 一開始沿著 的話, 有二條路徑可以選擇 : 與 從路徑 來看, 有四條叉路
0 如同前面, 我們可以找到路徑 : Q=, 路徑長為 ++++=
0 如同前面, 我們可以找到路徑 : Q=, 路徑長為 ++++= Q=, 路徑長為 +++=
0 如同前面, 我們可以找到路徑 : Q=, 路徑長為 ++++= Q=, 路徑長為 +++= Q=, 路徑長為 +++0=
0 如同前面, 我們可以找到路徑 : Q=, 路徑長為 ++++= Q=, 路徑長為 +++= Q=, 路徑長為 +++0= Q0=, 路徑長為 ++++0=
0 如同前面, 我們可以找到路徑 : Q=, 路徑長為 ++++= Q=, 路徑長為 +++= Q=, 路徑長為 +++0= Q0=, 路徑長為 ++++0=
0 Q=, 路徑長為 +++0=
0 Q=, 路徑長為 +++0= Q=, 路徑長為 ++=
0 從深度搜尋法可以搜尋到所有的路徑 : Q=, 長 Q=, 長 Q=, 長 Q=, 長 Q=, 長 Q=, 長 Q=, 長 Q=, 長 Q=, 長 Q0=, 長 Q=, 長 Q=, 長 Q=, 長
0 用廣度搜尋法可知, 此網路的最短路徑為 Q=, 路徑長為 ++++=
0 用廣度搜尋法可知, 此網路的最短路徑為 Q=, 路徑長為 ++++= 與最長路徑為 Q=, 路徑長為 ++++0=
0 然而, 一般 常識性 的走法, 都會在每一個節點面臨若干種選擇時, 挑選最佳最便捷的走法
0 然而, 一般 常識性 的走法, 都會在每一個節點面臨若干種選擇時, 挑選最佳最便捷的走法 比如, 剛開始在 出發時, 面臨 和 兩種選擇, 一般而言會挑
0 然而, 一般 常識性 的走法, 都會在每一個節點面臨若干種選擇時, 挑選最佳最便捷的走法 比如, 剛開始在 出發時, 面臨 和 兩種選擇, 一般兒言會挑 到了 以後, 面對 和, 這兩種選擇差距很大, 一般人很難抗拒去挑選
0 於是, 到了 就選, 最後走
0 於是, 到了 就選, 最後走 用此 短視近利法 挑選路徑, 竟得到一條路徑長最長的一條
0 接著我們討論 Backward 方法 ( 從網路終點往回推得最短路徑法 )
0 定義符號 : f(i) 定義 f(i) 為從節點 i 到網路終端 ( 節點 ) 的最短路逕的長度 ( 例如 f()=0) 定義符號 : Cij 定義 Cij 為從節點 i 到節點 j 的距離 ( 例如 C=)
0 首先我們可知 f()=0
0 首先我們可知 f()=0 接著往回推, 可得 f()=, f()=0
0 f()=0 f()=0 f()= f()=min{c+f(),c+f()} =min{,}=(=c+f())
0 f()=0 f()=0 f()= f()=min{c+f(),c+f()} =min{,}=(=c+f()) f()=min{c+f()}=0(=c+f())
0 f()=0 f()=0 f()= f()=min{c+f(),c+f()} =min{,}=(=c+f()) f()=min{c+f()}=0(=c+f()) f()=min{c+f(),c+f(),c+f(),c+f()} =min{+0,+,+0,+}=(=c+f())
0 f()=0 f()=0 f()= f()= (=C+f()) f()=0(=c+f()) f()=(=c+f()) f()=min{c+f(),c+f()} =min{+,+}=(=c+f())
0 f()=0 f()=0 f()= f()= (=C+f()) f()=0(=c+f()) f()=(=c+f()) f()=min{c+f(),c+f()} =min{+,+}=(=c+f()) f()=min{c+f(),c+f()} =min{+0,+}=0(=c+f())
0 f()=0 f()=0 f()= f()= (=C+f()) f()=0(=c+f()) f()=(=c+f()) f()=min{c+f(),c+f()} =min{+,+}=(=c+f()) f()=min{c+f(),c+f()} =min{+0,+}=0(=c+f()) f()=min{c+f(),c+f()} =min{+0,+}=(=c+f())
0 f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C) f()=0 (=C) f()=0 由此可得知從每個節點到網路終點 的最短路徑長, 與最短路徑
0 f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C) f()=0 (=C) f()=0 例如, 由 出發, 到 的最短路徑上, 下一個節點則為
0 f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C) f()=0 (=C) f()=0 例如, 由 出發, 到 的最短路徑上, 下一個節點則為 再來依序為
0 f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C) f()=0 (=C) f()=0 例如, 由 出發, 到 的最短路徑上, 下一個節點則為 再來依序為
0 f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C) f()=0 (=C) f()=0 例如, 由 出發, 到 的最短路徑上, 下一個節點則為 再來依序為
0 f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C) f()=0 (=C) f()=0 例如, 由 出發, 到 的最短路徑上, 下一個節點則為 再來依序為
0 f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C) f()=0 (=C) f()=0 例如, 由 出發, 到 的最短路徑上, 下一個節點則為 再來依序為, 總路徑長為 此方法即為 Backward 方法
0 f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C+f()) f()=0 (=C+f()) f()= (=C+f()) f()= (=C) f()=0 (=C) f()=0 此 Backward 方法的優點為 : 可直接關察出從任一節點到網路終點 的最短路徑與路徑長 ( 如圖為從 到 的最短路徑 )
0 再來我們討論 Forward 方法 ( 從網路起點出發的最短路徑法 )
0 類似地, 我們定些符號 : 定義符號 : g(i) 定義 g(i) 為從網路起點 到結點 i 的最短路逕的長度 ( 例如 g()=)
0 首先可知 g()=0
0 首先可知 g()=0 接著往前推, 可得 g()=, g()=
0 g()=0 g()= g()= g()=min{g()+c,g()+c} =min{+,+}=(=g()+c)
0 g()=0 g()= g()= g()=min{g()+c,g()+c} =min{+,+}=(=g()+c) g()=min{g()+c,g()+c} =min{+,+}=(=g()+c)
0 g()=0 g()= g()= g()=min{g()+c,g()+c} =min{+,+}=(=g()+c) g()=min{g()+c,g()+c} =min{+,+}=(=g()+c) g()=min{g()+c,g()+c} =min{+,+}=(=g()+c)
0 g()=0 g()= g()= g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=min{g()+c,g()+c} =min{+,+}=(=g()+c)
0 g()=0 g()= g()= g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=min{g()+c,g()+c} =min{+,+}=(=g()+c) g()=min{g()+c,g()+c} =min{+,+}=(=g()+c)
0 g()=0 g()= g()= g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=min{g()+c,g()+c} =min{+,+}=(=g()+c) g()=min{g()+c,g()+c} =min{+,+}=(=g()+c) g()=min{g()+c,g()+c,g()+c} =min{+,+0,+}=(=g()+c)
0 g()=0 g()=(=c) g()= (=C) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) 由此可得知從網路起點 到每個節點 i 最短路徑, 與路徑長
0 g()=0 g()=(=c) g()= (=C) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) 例如, 由 出發, 到 的最短路徑上, 節點 的前一個節點為
0 g()=0 g()=(=c) g()= (=C) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) 例如, 由 出發, 到 的最短路徑上, 節點 的前一個節點為, 再往前為
0 g()=0 g()=(=c) g()= (=C) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) 例如, 由 出發, 到 的最短路徑上, 節點 的前一個節點為, 再往前為, 再來依序為
0 g()=0 g()=(=c) g()= (=C) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) 例如, 由 出發, 到 的最短路徑上, 節點 的前一個節點為, 再往前為, 再來依序為
0 g()=0 g()=(=c) g()= (=C) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) 例如, 由 出發, 到 的最短路徑上, 節點 的前一個節點為, 再往前為, 再來依序為
0 g()=0 g()=(=c) g()= (=C) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) 例如, 由 出發, 到 的最短路徑上, 節點 的前一個節點為, 再往前為, 再來依序為, 總路徑長為 此方法即為 Forward 方法
0 g()=0 g()=(=c) g()= (=C) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) g()=(=g()+c) 此 Forward 方法的優點為 : 可直接關察出從網路起點 到任一節點的最短路徑與路徑長 ( 如圖為從 到 的最短路徑 )
0 現在二種演算法中都有個同樣的問題 : 如果一開始挑到的點不夠好呢? 比如說, 在 Forward 演算法中, 假如 之後我們挑到的點不是, 反而直接不小心挑到 呢? 我們該如何避免這樣的挑選方式?
0 現在二種演算法中都有個同樣的問題 : 如果一開始挑到的點不夠好呢? 比如說, 在 Forward 演算法中, 假如 之後我們挑到的點不是, 反而直接不小心挑到 呢? 我們該如何避免這樣的挑選方式? 答 : 可以先對網路做排序!
0 排序原理很簡單, 目的為避免剛剛所提出的問題的發生 我們使用分區塊來 排序原則有 : 從某節點出發, 下一個節點必須出現在往後的區塊中, 亦不可出現在同一區塊
0 排序原理很簡單, 目的為避免剛剛所提出的問題的發生 我們使用分區塊來 排序原則有 : 從某節點出發, 下一個節點必須出現在往後的區塊中, 亦不可出現在同一區塊 以下為其中一種排序方式 :
區塊 0 網路起點 定為區塊
區塊 區塊 0 網路起點 定為區塊 下一個連接到的點定為區塊
區塊 區塊 0 區塊 網路起點 定為區塊 下一個連接到的點定為區塊 再下一個會連接到的點定為區塊
區塊 區塊 區塊 0 網路起點 定為區塊 下一個連接到的點定為區塊 再下一個會連接到的點定為區塊 在這裡我們發現, 區塊 內有衝突我們的排序原則 ( 下一個節點不可出現在同一區塊 )
區塊 區塊 區塊 區塊 0 網路起點 定為區塊 下一個連接到的點定為區塊 再下一個會連接到的點定為區塊 在這裡我們發現, 區塊 內有衝突我們的排序原則 ( 下一個節點不可出現在同一區塊 ) 因此將區塊 拆開為 與
區塊 區塊 區塊 0 區塊 區塊 接著同樣地, 下一個會連接到的點定為區塊
區塊 區塊 區塊 區塊 接著同樣地, 下一個會連接到的點定為區塊 又發現, 區塊 內有衝突我們的排序原則 0 區塊
區塊 區塊 區塊 區塊 區塊 接著同樣地, 下一個會連接到的點定為區塊 又發現, 區塊 內有衝突我們的排序原則 因此將區塊 拆開為 與 0 區塊
區塊 區塊 區塊 區塊 區塊 0 區塊 這樣不論是要用 Backward 還是 Forward, 只要挑選的原則是照區塊來挑選, 則能避免剛剛所提出的問題
學生需要被啟發 學習的動機是需要慢慢蘊釀以及引導的. 看東西的角度是需要一再調整的. 事情的面向是一層一層撥開. 很多事情的答案是經驗的累積. 多元的經驗, 來自失敗, 嘗試, 與跨界的理解! 這些經驗, 來自先人巨量的時間和智慧, 其過程, 應該是故事性的. 其結果, 應該是動人而肅然的. 我認為這些經驗, 必須要有系統的編進各級數學教材, 而且要與時俱進. 0
Thank you!!