推 march20:請問這定義出處為何? 08/17 08:54
推 flamerecca:knuth的聖經本"the art of computer programming" 08/17 11:24
推 march20:口也, 要注意 knuth 在說這段話時, 並沒用 "必需" 這樣的 08/17 18:47
推 march20:強烈字眼 (喵的, 我在說廢話, 請省略 XD) 08/17 18:52
→ hannibal0416:呃,沒"必需"@@我抄的筆記有@@,可能抄錯了@@ 08/18 13:10
推 march20:你應該是沒抄錯, 原文似乎是widely accepted requirements 08/18 23:41
推 march20:真的要挑骨頭, 只能說這個定義不夠嚴格 XD 08/18 23:42
還是拿原文來討論比較有勁吧。
Knuth (1968, 1973) has given a list of five properties that are widely
accepted as requirements for an algorithm:
Finiteness:
"An algorithm must always terminate after a finite number of steps"
Definiteness:
"Each step of an algorithm must be precisely defined; the
actions to be carried out must be rigorously and unambiguously specified
for each case"
Input:
"...quantities which are given to it initially before the algorithm
begins. These inputs are taken from specified sets of objects"
Output:
"...quantities which have a specified relation to the inputs"
Effectiveness: "... all of the operations to be performed in the algorithm
must be sufficiently basic that they can in principle be done exactly and in
a finite length of time by a man using paper and pencil"
他在定義裡面哪裡沒有用"必須"這麼強烈的字眼了?
難道"must"這個字有其他更嚴謹的定義嗎?
因為演算法的定義可以不止一種,上面的定義只不過是knuth所訂出來的,
只要你開心,你也可以訂一個不需要有限性的演算法定義,只不過沒什麼人鳥而已,
所以這個定義才會說是被廣泛接受的,而不是真理。
但是你要說knuth訂的不夠嚴格,我想這可能算是一種人身攻擊吧。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.192.50
推 march20:你說的我都同意, 但為什麼這樣叫人身攻擊? 08/25 06:02
推 march20:而且我都承認是在挑骨頭了, 表示我也覺得這樣說不合理咩XD 08/25 06:14
→ AmosYang:就演算法來說 "可能" 這兩個字並不是很嚴謹啊… (離題) 08/25 11:22
推 march20:喵的, 我想說離題太遠, 跟大家道歉, 沒想到真的有人覺得 08/25 12:34
推 march20:定義演算法很無聊? 還覺得 08/25 12:34
推 march20:"Each step of an algorithm must be precisely defined" 08/25 12:35
推 march20:之類的說法不可能 "更嚴格" ? 08/25 12:35
推 march20:有 Introduction to the Theory of Computation 的人 08/25 12:35
推 march20:請翻一下 3.3 然後說 "嚴格地定義演算法" 很無聊 08/25 12:36
推 march20:再次重申 "人身攻擊" 跟 "人格攻擊" 一點都不相同 08/25 12:36
推 march20:而且我一個也沒犯, 謝謝! 08/25 12:36
推 Hseuler:這的確沒有人身攻擊啊 08/25 17:14
→ neverfly:原來所謂的嚴格定義,是要嚴格定義在定義前面那句描述 08/25 17:33
→ neverfly:而不是嚴格定義出定義本身,真是讓人大開眼界 08/25 17:33
→ neverfly:演算法的定義本來就不止一種,怎能要求Knuth一定要說: 08/25 17:34
→ neverfly:"Each step of an algorithm must be precisely defined" 08/25 17:34
→ neverfly:這麼果斷的話?他底下的定義本身又哪裡沒有用強烈的字了? 08/25 17:34
→ neverfly:就好像有人解了一題難題,然後補上:"這是其中一種解法" 08/25 17:36
→ neverfly:然後有人推論出:"吼,這代表他的解法不夠嚴格"一樣奇怪 08/25 17:36
推 march20:那請告訴我什麼叫 "precisely" defined 08/26 00:30
推 march20:請問給出像類似 Turing machine 的定義會不會比單這句 08/26 00:31
推 march20:precisely defined "嚴格" 呢? 08/26 00:31
推 march20:然後我完全看不懂 "原來所謂的嚴格定義" 08/26 00:32
推 march20:"原來所謂的嚴格定義,是要嚴格定義在定義前面那句描述" 08/26 00:32
推 march20:是在講什麼. 再來, 請你說明我何處做了怎樣的人身攻擊? 08/26 00:33
推 march20:(當看到 "人身攻擊" 之後, 總個人火了起來....) 08/26 00:33
推 march20:我同意 "解法" 本身沒 "嚴格" 的問題, 但這裡是講 "定義" 08/26 00:34
推 march20:定義本來就有嚴格不嚴格的問題了. 照你這樣說量子力學 08/26 00:35
推 march20:也不需要存在,而量子力學的存在不就是對牛頓的"人身攻擊"? 08/26 00:36
推 march20:對了 "Each step of an algorithm must be precisely defi 08/26 00:45
推 march20:fined" 就是 knuth 說的, 請看仔細 08/26 00:45
推 march20:而且我並沒用你說的 "給出其中一種解法, 所以不嚴格" 這種 08/26 03:11
推 march20:說法來推論 knuth 的定義不嚴格,你告訴我,我哪裡這樣說了? 08/26 03:12
推 march20:請不要將不相關的兩個言句自行做聯結, 並據以為非好嗎? 08/26 03:13
推 ledia:這種顯然是拿一句話就來亂戰的, 沒必要為他生氣 08/28 11:07
→ ledia:讓小的來混戰就好 (誤) 08/28 11:08
推 flamerecca:以knuth的聲望 指責他那本書不嚴謹似乎蠻強烈的 08/28 11:58
→ flamerecca:倒也不是說就不可批評他或怎樣 只不過... 08/28 11:59
→ flamerecca:私心是認為march20大以錯誤的論述說人 因看起來就變得 08/28 12:00
→ flamerecca:有點像那群整天批評相對論的怪人吧.... 08/28 12:01
推 march20:我承認我的說法確實有不合理, 但說這個說法不夠嚴格的人 08/28 13:40
推 march20:可是 knuth 自己唷 XD 08/28 13:40
推 march20:我最不能接受的是 ptt 上特別愛用所謂的 "人身攻擊" 08/28 13:41
推 march20:偏偏知道什麼叫"人身攻擊" 的少之又少, 似乎只要有一吵架 08/28 13:42
推 march20:"人身攻擊" 馬上就可以變成大絕一樣 08/28 13:43
推 march20:(那個什麼 must 的, 是我胡言亂語, 不過似乎沒人看到我寫 08/28 13:56
推 march20:的那句, 再次為我的胡言亂言道歉 XD, 不過不夠嚴格可就不 08/28 13:57
推 march20:是隨便說了, 雖然是在挑骨頭. 這兩件事彼此無關, 請 08/28 13:58
推 march20:勿作聯結...) 08/28 13:58
推 march20:好了, 接下來還有什麼 "錯誤推論" 請多指教! 08/28 14:00
→ AmosYang:接下來我們來看看 Knuth 對 ad hominem 演算法的定義(誤) 08/28 17:41