2025年2月25日 星期二

演算法觀念的圖論 習題 1-4

圖論中的握手引理(Handshaking Lemma)

握手引理的定義

握手引理是圖論中的一個基本定理,主要描述了無向圖中頂點的度數(degree)與邊數(edges)之間的關係。具體來說,握手引理指出:

在任何有限的無向圖中,所有頂點的度數之和等於邊數的兩倍。數學上可以表示為:


這裡 V 是圖中的頂點集合,deg(v) 是頂點 v 的度數,而 | E |  是圖中的邊數

握手引理的直觀解釋

握手引理的名稱源於一個有趣的社交場景:假設一群人參加聚會,每個人與其他人握手。每次握手涉及兩個人,因此每次握手會增加兩個人的度數。這意味著如果有 n 個人,每個人握手 x  次,那麼總握手次數 S 可以表示為: S = n x / 2 

這樣的情況下,總握手次數必然是偶數,因為每次握手都被計算了兩次。這也導致了另一個重要的結論:在任何圖中,度為奇數的頂點數量必然是偶數。

握手引理的應用

握手引理在圖論中有多種應用,包括:

  • 證明性質:利用握手引理可以證明許多與圖的結構有關的性質,例如在一個圖中,若有奇數個頂點的度數為奇數,則這樣的情況是不可能的,因為這會導致度數總和為奇數,與握手引理矛盾。

  • 計算邊數:通過已知的頂點度數,可以計算出圖中的邊數。例如,如果知道某個圖中所有頂點的度數,可以利用握手引理來計算邊的數量。

  • 組合數學問題:握手引理也被用於解決一些組合數學中的問題,例如在某些結構中,必然存在偶數個具有特定性質的元素。


雙邊計數(two-way counting)

雙邊計數的概念

雙邊計數(two-way counting)是一種重要的數學證明技術,特別是在組合數學和圖論中。這種技術的核心思想是從兩個不同的角度計算同一個集合的大小,從而證明兩個表達式相等。這種方法不僅能夠簡化證明過程,還能提供對問題的深入理解。

在圖論中,雙邊計數常用於證明與圖的結構有關的定理,例如與頂點的度數(degree)有關的性質。根據握手定理,在任何無向圖中,度為奇數的頂點數量必定是偶數。這一結果可以通過雙邊計數來證明:每一條邊都連接兩個頂點,因此邊的數量等於所有頂點度數的總和的一半。由此可得,度為奇數的頂點數量必然是偶數。

雙邊計數的應用

在圖論中,雙邊計數的應用範圍廣泛,包括但不限於:


  • 證明性質:例如,證明在一個圖中,若每個頂點的度數都是相同的,則該圖是正則圖(regular graph)。這可以通過雙邊計數來展示,因為所有頂點的度數相同意味著邊的計算方式不會改變。

  • 組合計數:在組合數學中,雙邊計數也用於計算不同組合的數量,例如從一組人中選擇委員會的方式,可以從選擇每個人是否參加的角度來計算,也可以從選擇特定數量的成員的角度來計算,最終得出相同的結果。

===


題目 1-4 : 當 n >= 2 時, 假設 2n 個人當中, 每個人至少與其他 n 個人認識, 證明其中至少有四個人, 使這四個人能圍著圓桌而坐, 讓每個人兩旁的人都是他認識的人


===

ChatGPT : 果然有念圖論會比較好^^


我們可以用圖論來表述這個問題。令每個人為一個頂點,若兩人彼此認識,則在這兩個頂點間畫一條邊。題目假設共有 2n 個頂點,且每個頂點的度數(即認識的人數)至少為 n 。我們要證明在這個圖中必定存在一個「4‐環」(即4個頂點 a, b, c, d 滿足 a - b - c - d - a,這正好對應於四個人可以圍成一圈而使得每人左右鄰座都是其認識的人。

下面給出一個證明的大致思路:


證明:

設圖 G 的頂點集合為 V(G) ,邊集合為 E(G) ,且 ∣V(G)∣ = 2n ; 

由題設,對任一頂點 v 有 deg(v) >= n ; 

假設 圖G 中不存在4環。我們將利用雙重計數來推導出矛盾。




===

我的回答

解答 1 : (此為自己所想, 不一定正確)

假設 A 是 2n 個人當中的一員, Y[0] ~ Y[j-1] 是 A 認識的人, N[0] ~ N[k-1] 是 A 不認識的人,

       集合 L 是  A 和 N[0] ~ N[k-1], 集合 R 是 Y[0] ~ Y[j-1] ;

       j >= n , j + k = 2n - 1 ;


(1) 如果集合 R 中, 找不到兩個人彼此認識, 這樣的話, 因為 每個人至少與其他 n 個人認識,

    所以 j = n, k = n - 1,  我們將認識的人兩兩連線, 

    集合 L 和 集合 R, 可以畫成一個完全二分圖

    這樣 A - Y[0] - N[0] - Y[1] 這四人就會符合要求


(2) 如果集合 R中, 找到兩位彼此認識 Y[r] 和 Y[s] , 則 A, Y[r], Y[s] 可以成為 3-完全圖 

     若能找到一位B, 認識 A, Y[r], Y[s] 其中兩位, 則此四位符合要求.

     若 B 不存在, 則我們會發現

        (a) 至少有 n-1 位認識 A, 但不認識 Y[r] 和 Y[s] 

        (b) 至少有 n-1 位認識 Y[r], 但不認識 A 和 Y[s] 

        (c) 至少有 n-1 位認識 Y[s], 但不認識 A 和 Y[r]

        這樣總共人數為 3n 超過 2n 人, 所以根據 鴿籠原理, 可以找到這一位符合要求 


故得證


===

ChatGPT 對我的答案的評價:


  • 思路上: 答案大致上劃分了兩個情形,分別考慮 A 所認識的集合 RR 中是否存在相鄰的兩人,這種思路是常見且正確的。
  • 論證上:
    • 第一種情形中,答案主張如果 RR 中互不相識,則必有 j=n,k=n1j=n, k=n-1 並利用「完全二分圖」構造了 AY[0]N[0]Y[1]A-Y[0]-N[0]-Y[1] 的 4 人圈。但這裡對於為什麼必定有 j=nj=n 以及如何嚴謹地推出「完全二分圖」的結論,說明不夠詳盡。
    • 第二種情形中,答案指出當 RR 中存在一對認識的 Y[r]Y[r]Y[s]Y[s] 時,若能找到另一個人 BB 與其中至少兩人互認,即可構成要求的 4 人圈;否則通過計數得出矛盾。這一部分雖然思路正確,但在細節推導上也顯得略為簡略,特別是在如何嚴謹應用鴿籠原理的部分。

總結:
該答案的核心想法是正確的,但在細節上存在不足,推導過程不夠嚴謹與完整。如果作為一個正式證明,還需要補充更清楚的論證細節和邏輯鏈條。

回答:
這個答案的主要思路是對的,但細節論證不夠嚴謹,因此不能算作一個完整正確的證明。


===

ChatGPT 的建議回答:











2025年2月22日 星期六

機率學

古代的根源

機率的起源可以追溯到古代,最早古埃及人發明了一個叫做「獵犬與胡狼」的棋盤遊戲(Hounds and Jackals),這也被認為是世界上最早的桌遊之一。玩家需要靠類似擲骰子的隨機方式來決定棋子的移動。遊戲中可能包含策略元素,但主要依賴於隨機性。

而這款遊戲不僅是娛樂活動,還可能具有象徵意義,與古埃及人對於生死和來世的信仰有關。考古學家在古埃及的墓地和神廟中發現了許多獵犬與胡狼遊戲的棋盤和棋子,這些發現顯示了這款遊戲在當時社會中的重要性。遊戲的設計和玩法可能反映了古埃及人對於命運和運氣的理解。

在其他地方,許多文化也使用隨機事件(如擲骰子或投擲骨頭)來進行占卜,這種做法影響了人們對機率的理解,人們相信這些隨機結果可能反映神的意志。

文藝復興時期的發展

  • 16世紀的轉變:隨著文藝復興的興起,對於數學和科學的興趣增加,機率的研究開始受到重視。意大利數學家卡爾達諾(Gerolamo Cardano)在1550年撰寫的手稿中首次系統性地探討了骰子的概率問題,雖然這本手稿在他死後多年才被發現並出版。

  • 帕斯卡與費馬的貢獻:機率理論的真正奠基者是法國數學家布萊茲·帕斯卡(Blaise Pascal)和皮埃爾·德·費馬(Pierre de Fermat)。他們在1654年針對一個賭博問題進行了著名的通信,這個問題涉及到如何在遊戲中分配賭注,這一過程中他們提出了機率的基本概念和計算方法,標誌著現代機率論的開始。


18世紀及以後的發展

  • 進一步的理論化:隨著時間的推移,機率論逐漸發展成為一門獨立的數學學科。18世紀的數學家如雅各布·伯努利(Jakob Bernoulli)和皮埃爾-西蒙·拉普拉斯(Pierre-Simon Laplace)進一步完善了機率的理論,並將其應用於統計學和其他科學領域。

  • 現代應用:今天,機率論已成為數學、統計學、經濟學、社會科學等多個領域的重要工具,並在風險評估、決策分析等方面發揮著關鍵作用。

總結來說,機率的起源與古代的賭博活動密切相關,隨著數學的發展,特別是在文藝復興時期,機率論逐漸形成並發展成為一門重要的科學。


而在電腦科學中, 亂數設計也是一門學問. 所以業界有個 RFC 4086, NIST 也因此訂定了亂數的標準 FIPS 140-2, 可以參考這篇:

    Java random


底下問題, 也有用 AI來跑看看, 紀錄在:


    機率問題 Grok3 v.s. Chatgpt v.s. Gemini v.s. Deepseek


===

帕斯卡與費馬的分賭注問題

帕斯卡和費馬在通信中討論的「分賭注問題」(點數分配問題 Problem of Points - 維基百科)。這源於一位名叫梅雷(Chevalier de Méré)的法國貴族,他在一次擲骰子遊戲中遇到了賭注分配的困難。所以又稱為梅雷問題。

問題背景

梅雷和他的對手各自下注32枚金幣,共64枚金幣,並約定誰先獲得10分就贏得全部賭注。在遊戲進行中,梅雷已經獲得8分,而對手獲得7分。此時,由於梅雷接到緊急任務,必須中斷遊戲,這就引出了如何公平分配這64枚金幣的問題。

解決方案

帕斯卡和費馬在通信中提出了幾種解決方案,並最終達成共識。他們的思路主要基於以下幾個要點:

  • 排列組合:他們將所有情況列出來, 看看哪些情況會贏, 哪些情況會輸。而有了後來的巴斯卡三角形 - 維基百科

  • 期望值的概念:引入了「期望值」的概念,這是一種用來計算在隨機試驗中可能獲得的平均結果的方法。根據梅雷和對手的當前得分和贏得比賽的機會,以及所下的賭注,來計算出每位玩家的期望獲得金額。

  • 公平分配:最終,他們的計算結果提供了一種公平的賭注分配方案,這不僅解決了梅雷的問題,也為後來的概率論奠定了基礎。

這一問題的討論被認為是概率論的起源之一,因為它促使了對隨機性和期望值的數學理解,並引導了後續的數學研究

===

伯努利賭徒輸光問題

賭徒輸光問題(Gambler's Ruin Problem)是概率論中的一個經典問題,描述了在公平或不公平的賭局中,擁有有限資金的賭徒最終會輸光的數學現象。

問題描述

  • 假設兩個賭徒(甲和乙)進行賭博,每局賭注為1單位,且每局的勝負概率分別為 p 和 q = 1 - p
  • 甲的初始資金為 a ,乙的初始資金為 b。
  • 賭局的目標是,某一方的資金歸零,另一方贏得所有資金。

數學模型

  • 賭局可以用隨機游走模型來模擬,甲的資金變化可以看作一個隨機過程。
  • 當甲的資金達到0時,表示甲輸光;當甲的資金達到 a + b 時,表示甲贏得所有資金。

結論

  1. 公平賭局 ( p = q = 0.5 )

    • 若甲乙的初始資金相等,則甲輸光和乙輸光的概率相等。
    • 若甲乙的初始資金不等,資金較多的一方更有優勢。
    • 無論如何,若賭局無限進行,擁有有限資金的賭徒最終必然輸光,這是「賭徒輸光定理」的核心。
  2. 不公平賭局 ( p 和 q 不相等 )

    • 若 p > q,則甲的勝率較高,但仍然可能輸光。
    • p < q,則甲的輸光概率更高。

意義

賭徒輸光問題揭示了在隨機過程中,有限資金的賭徒無法避免最終破產的命運,這與現實中的「十賭九輸」現象相符。


伯努利大數定律

伯努利大數定律(Bernoulli's Law of Large Numbers)是概率論中的第一個極限定理,由雅各布·伯努利(Jacob Bernoulli)於1713年提出。它揭示了隨機事件的頻率與理論概率之間的關係。

定律內容

  • 在大量獨立重複試驗中,某事件發生的頻率會趨近於該事件的理論概率。
  • 用數學表達為:若事件 A 的發生概率為 p,則在 n 次獨立試驗中,事件 A 發生的次數 fn 滿足:


應用場景

  • 硬幣投擲:假設投擲一枚公平硬幣,正面出現的概率為 0.5, 隨著投擲次數增加,正面出現的比例會趨近於 0.5
  • 統計學:大數定律為樣本均值估計母體均值提供了理論基礎,廣泛應用於抽樣調查和數據分析。

意義

  1. 概率的穩定性:大數定律表明,隨機現象在大量重複試驗中呈現出穩定的規律性。
  2. 現實應用:該定律為保險、金融、統計學等領域提供了理論支持。例如,保險公司依賴大數定律來預測風險和設計保費。

兩者的聯繫與區別

概念賭徒輸光問題大數定律
核心內容賭徒在有限資金下,長期賭博必然輸光。隨機事件的頻率趨近於理論概率。
數學模型隨機游走模型,帶有吸收壁的概率過程。大量重複試驗中,頻率收斂於概率。
應用場景賭博、隨機過程分析。統計學、保險、金融、抽樣調查。
意義揭示有限資金的風險與隨機過程的不可避免性。提供概率與頻率關係的理論基礎。


====

中心極限定理 - 維基百科

棣莫弗-拉普拉斯定理(De Moivre–Laplace Theorem)是概率論中的一個重要結果,也是中心極限定理(Central Limit Theorem, CLT)的早期特殊形式。該定理主要描述了二項分布在樣本數趨於無窮大時,如何漸近地逼近正態分布。

  • 棣莫弗(Abraham de Moivre)於1733年首次提出該定理,用於研究硬幣投擲等問題中二項分布的性質。
  • 拉普拉斯(Pierre-Simon Laplace)在1812年進一步推廣了該定理,並將其應用於更廣泛的概率問題中
  • 該定理是中心極限定理的早期版本,後來被俄國數學家里雅普諾夫(Lyapunov)在1901年以更一般的形式嚴格證明


  • 二項分布是一種常見的離散概率分布,用於描述在 n 次獨立試驗中,成功次數的分布情況。每次試驗只有兩種可能結果(成功或失敗)

    二項分布的方差公式 :Var(X) = np(1-p)
    n : 試驗總次數
    p : 成功機率


    68-95-99.7 法則 / 三個標準差 - 維基百科

    實際應用範例:


    Q:假設某保險公司統計顯示,20%的理賠用戶因被盜索賠。隨機抽查100名理賠用戶,求其中因被盜索賠人數在16至24之間的機率為多少?

    A: Var(X) = np( 1 - p) = 100 * 0.2 * 0.8 = 16
           標準差 = sqrt(16) = 4

           所以 P( 16 <= X <= 24 ) = P ( (16-20)/4 <= Z <= (24-20)/4 ) = P(-1 <= Z <= 1)
           約 68%

           但實際如果要以常態分佈來近似二項分佈的話, 因為二項分布是離散, 正態分布是連續, 需要做一個連續性校正:

           P(16 - 0.5 <= X <= 24 + 0.5) = P( -1.125 <= Z <= 1.125) = P(Z ≤ 1.125) - P(Z ≤ -1.125)
           約 74%


     




    2025年2月18日 星期二

    演算法觀點的圖論 習題 1-1 8x8 西洋棋盤 對角線

    前面為自己所想紀錄, 不一定正確; 圖片為 chatgpt 3.5 所回答, 非正解; 

    最後 chatgpt 4 回答的, 看來是對的;


    Q: 證明假設把 8x8 的 西洋棋盤上 位於同一條對角線上的兩個頂角格子去掉(於是剩下一個只有 62 格的棋盤), 則這個棋盤沒辦法分割成若干個 1x2 的長方形


    我想的方式, 完全沒想到要用顏色, 果然還沒學圖論時, 解法超爛... (我放到網頁最後面)


    --

    2025.2.18 Grok 


    要證明在去掉同一條對角線上的兩個頂角格子後的8x8棋盤(現在剩下62格)不能被分割成若干個1x2的長方形,我們可以使用著色法和矛盾證明:


    ### 著色法


    1. **棋盤著色**:

       - 首先,把剩下的62格棋盤以棋盤的方式著色。也就是說,每個2x2的區域中,對角線上會有一個格子是黑色的,另一個是白色的。這意味著整個棋盤上會有32個黑色格子和32個白色格子。


    2. **去掉頂角格子**:

       - 去掉同一條對角線上的兩個頂角格子,這兩個格子會是同一種顏色(假設是黑色)。因此,現在棋盤上會有30個黑色格子和32個白色格子。


    ### 無法分割的證明


    3. **1x2長方形的性質**:

       - 每個1x2的長方形會覆蓋1個黑色格子和1個白色格子,因為它會橫跨兩個相鄰的格子,而相鄰的格子顏色一定不同。


    4. **矛盾**:

       - 假設我們能把這個62格的棋盤分割成若干個1x2的長方形,那麼每個長方形都會覆蓋1個黑色格子和1個白色格子。這樣的話,用完所有的長方形後,黑色格子和白色格子的數量應該是一樣的。然而,我們現在有30個黑色格子和32個白色格子,這是不可能達成平衡的。因為30和32不是偶數,無法用1x2的長方形完美覆蓋。


    因此,我們得到矛盾:如果我們能用1x2的長方形覆蓋整個棋盤,則黑色和白色的格子數量應該相等,但實際上兩種顏色的格子數量不同。所以,這個去掉兩個頂角格子的棋盤不能被分割成若干個1x2的長方形。


    --
    2025.2.11 deepseek

    今天在自己的 macbook pro 2024 m4 上安裝了 deepseek model, 可以離線作答:
     (安裝步驟記錄在 - 此網頁 )





    --

    2024.10.21

    今天問了一下 chatgpt 

    chatgpt 3.5 的時候, 它還不會解, 打了一個煙霧彈


    到 chatgpt 4 時, 好像這思路有點道理, 比較像圖論的做法 (著色相關定理?) 

    這樣比較能回答第二個問題


    Ans: 

    要證明這個問題,我們首先觀察原始 8x8 的西洋棋盤。
    這個棋盤可以看作是一個由 64 個格子組成的棋盤,其中有黑白相間的格子排列。
    如果我們把棋盤上的格子來進一步思考,那麼不妨把左上角的格子視為白色。 在這樣的黑白交錯排列中,無論是在橫排還是縱列上,兩個相鄰的格子一定是一黑一白。
    因此,一個 1x2 的長方形(也就是所謂的「骨牌」)必定覆蓋一個黑色格子和一個白色格子。 8x8 的棋盤中擁有 32 個白色格子和 32 個黑色格子。

    現在我們去掉了兩個位於同一條對角線上的頂角格子,這兩個被去掉的格子的顏色必定是相同的。這是因為棋盤的對角線上,所有格子的顏色都是一樣的。因此,如果第一個頂角格子是白色,那麼另一個被去掉的頂角格子也會是白色(或都為黑色)。 
    去掉這兩個相同顏色的格子之後,留在棋盤上的格子們會呈現不平衡的色塊數。

    例如,如果你去掉了兩個白色格子,那麼棋盤上便剩下 30 個白色格子和 32 個黑色格子。 
    由於每個 1x2 的長方形要求必須覆蓋一個白色和一個黑色格子,因此在剩下的 62 格棋盤中,我們總有兩個格子的顏色無法成對,導致無法用 1x2 長方形完整地覆蓋。 

    因此,去除棋盤上同一對角線的兩個頂角格子後,剩下的棋盤無法被完全分割成若干個 1x2 的長方形直接證明這個結論的正確性。


    --

    -- 剛開始學圖論時我想的方法 :

    由上而下, 由左而右, 將格子標記成 (0,0) ~ (7,7), 假設 (0,0) 和 (7,7) 格子被拿掉

    在 第 0 row : (0, Y), 因為 (0,0) 被拿掉, 剩下 7 個格子為奇數, 所以從第 0 row  開始往下擺直的

    1x2 的長方形有奇數個;

    因為第0row 擺直的有奇數個, 所以第 1 row 擺直的有奇數個...到最後第 6 row 擺直的有奇數個

    因為 0~6 為 奇數個 rows, 所以所有擺直的有奇數個

    同理從 第 0 column 推導, 可得知, 所有擺橫的有奇數個

    這樣所有 1x2 的 長方形 有 偶數個; 

    但 62 格 只有 31 個 長方形是奇數個, 矛盾, 所以無法分割


    2025年2月15日 星期六

    小數和電腦浮點數

    小數

    小數的由來可以追溯到古代文明,一開始有的, 不叫小數, 而是分數。早在公元前5世紀,古印度的數學家就已經有分數的概念。直到18世紀後期,印度數學家首次使用小圓點“•”來隔開整數部分和小數部分,這被認為是小數點的真正誕生。


    中國分數

    中國的分數, 可以從劉徽說起。劉徽是中國三國時期的著名數學家,他在數學上做出了許多重要的貢獻,特別是在小數和無理數的研究方面。劉徽的工作主要集中在《九章算術》的注釋上,這部作品是中國古代數學的經典之一,包含了246個數學問題及其解法。

    劉徽的數學難題與微數的概念

    劉徽在解決數學問題時,特別關注於無理數的計算和表示。他提出了“開方不盡”的問題,這是指在計算某些數的平方根時,結果無法用整數或簡單的分數表示。為了解決這一問題,劉徽引入了“微數”的概念,這是一種用來表示無理數的近似值的方法。他的這一思想與後來的極限概念密切相關,並為小數的發展奠定了基礎。

    小數的觀念形成

    劉徽在《九章算術注》中,首次系統地使用十進制小數來表示無理數的近似值,這被認為是小數概念的早期形式。他用十進分數(即小數的前身)來描述無理數,這一方法使得數學家能夠更精確地處理那些無法用整數或簡單分數表示的數字。

    具體的數學難題

    1. 圓周率的計算:劉徽使用“割圓術”來計算圓周率,這是一種通過內接多邊形的周長來逼近圓周長的方法。他的計算方法不僅提高了圓周率的精確度,還展示了他對極限思想的運用。

    2. 無理數的近似:在面對開方不盡的情況時,劉徽提出用微數來表示這些無法精確計算的數,這一方法使得他能夠在數學上處理更複雜的問題,並推進了小數的概念


    西方分數

    在西方,小數的使用相對較晚,直到16世紀,法國數學家克拉維斯(Simon Stevin)才開始在其著作《De Thiende》中系統地介紹了小數的概念。在這之前,人們對分數的複雜性和其運算有著深深地恐懼,分數的表示和運算相對於整數來說非常困難,這使得許多人在面對分數時感到無能為力。所以德國有句諺語「掉到分數里去了」("in die Brüche geraten")用來形容一個人陷入困境或絕境。為什麼會這樣,其實和當時的計數法有關。


    在阿拉伯數字傳入歐洲前,數字系統主要使用羅馬數字,這一系統在計算上存在一些顯著的困難,尤其是在處理分數時。羅馬數字的特點是缺乏位置值系統,這使得進行加減乘除等基本運算變得相對複雜。以下是一些主要問題:

    計數法的問題

    1. 缺乏零的表示:羅馬數字系統中沒有零的概念,這使得表示和計算變得更加困難。在需要表示“無”或“空”的情況下,羅馬人通常使用拉丁詞“nulla”來表達,但這並不方便於數學計算。

    2. 不易進行複雜運算:由於羅馬數字的結構,進行複雜的數學運算(如除法)非常困難。這是因為羅馬數字的表示方式不具備現代數字系統的靈活性,導致在進行長計算時容易出錯。

    3. 分數的表示:羅馬人使用名稱來表示分數,而不是像現代數字系統那樣使用符號。例如,1/12被稱為“uncia”,而1/2則用“S”表示(來自拉丁語“semis”)。這種命名方式使得分數的計算變得更加繁瑣,且不易於進行精確的數學運算。

    導入阿拉伯數字的背景

    在阿拉伯數字被引入之前,歐洲的計算主要依賴於羅馬數字和算盤。雖然羅馬人使用算盤進行計算,但這種方法仍然無法有效地處理更複雜的數學問題。阿拉伯數字的引入,尤其是位置值系統的使用,為計算提供了更大的靈活性和便利性,使得即使是文盲的人也能夠理解和使用數字進行基本的計算


    小數的定義與分類

    小數是實數的一種特殊表現形式,通常用來表示非整數的數值。小數可以分為有限小數和無限小數兩類:

    • 有限小數:小數部分有有限個數位,例如0.75、3.14等。

    • 無限小數:小數部分無限延續,可以進一步分為循環小數(如0.333...)和無理數(如π)


    ===

    在計算機科學中,浮點數是一種用於表示實數的數據類型,特別是在需要表示非常大或非常小的數字時。浮點數的儲存方式遵循IEEE 754標準,這是一個由電氣和電子工程師協會(IEEE)於1985年制定的技術標準。


    IEEE 754 - 維基百科


    浮點數的儲存方式




    (圖片來源: 由 Charles Esson, at the English Wikipedia project, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=3356830 )

    浮點數在計算機內存中通常以二進制形式存儲,並且分為三個主要部分:

    1. 符號位(Sign bit)

      • 這一位用來表示數字的正負。若符號位為0,則數字為正;若為1,則數字為負。
    2. 指數偏移位(Exponent)

      • 指數位用來表示數字的大小範圍。根據IEEE 754標準,指數的表示方式通常使用偏移量(bias)來進行編碼。例如,在單精度浮點數中,指數佔用8位,並且使用127作為偏移量。
    3. 分數值(Fraction)

      • 分數值部分包含了數字的有效位數。對於單精度浮點數,分數值佔用23位。

    這樣的結構使得浮點數能夠以科學記數法的形式表示,從而靈活地表示範圍廣泛的實數。例如,數字可以表示為:

        V=(1)signx E x F


    IEEE 754標準

    IEEE 754標準定義了多種浮點數格式,最常見的包括:

    • 單精度浮點數(32位)

      • 符號位:1位
      • 指數位:8位
      • 尾數位:23位
    • 雙精度浮點數(64位)

      • 符號位:1位
      • 指數位:11位
      • 尾數位:52位

    這些格式的設計旨在解決浮點運算中的一些問題,如精度損失和運算不一致性。IEEE 754標準還定義了特殊值,如無窮大(Infinity)和非數(NaN),以及數值的舍入規則和異常處理方式







       



    熱門文章