前言
在 oiwiki 的進制位下面看到了平衡三進制。這是一種有趣的進制。因為 -1 的引入,把一個平衡三進制的所有數位上的數取相反數,就可以得到這個數的相反數。
介紹
普通的三進制書位上的數可以是0,1,2,而平衡三進制則是1,0,-1,下文用 Z 來表示 -1。
轉化成十進制的計算方法和其他進位制是一樣的,∑ai*3i-1,而十進制轉化為平衡三進制,則需要先轉化為普通三進制,然后按照如下步驟從低位到高位操作。
1,遇到 0 和 1,直接跳過
2,遇到 2,當前位改為 Z,下一位 +1
3,遇到 3,當前位改為 0,下一位 +1
討論
顯然,按照這樣的操作步驟,一個十進制能且僅能得到一個平衡三進制數。但是,是否存在兩個不同的平衡三進制數,使得這兩個數可以轉化為同一個十進制數呢?
不妨設有兩個平衡三進制數 A B。
A 的 第 i 位為 ai,B 的第 i 位為 bi
顯然,A 和 B 不同,當且僅當存在一個 i,使得 ai ≠ bi
顯然,1*3i-1 > ∑2*3i-2
顯然,1*3i > 2*3i-1
於是,也就是說,如果第 i 位不同,單靠 1 -> i-1 這些位上的數字不能與之抵消(太小了),單靠 i+1 及以上的位數也不能與之抵消(太大了)。
於是考慮結合起來,使得 i 左右兩邊對第 i 位的影響盡量接近於 1^3i-1 或者 2^3i-1 。
先取一個 1^3i-1 發現過大,考慮用低位減小,越小越好,於是取 ∑2*3i-2 。
可以發現,最后得到的結果, 1^3i-1 - ∑2*3i-2 = 2^3i-1 ^ 1。還是太大了。
以上過程有些抽象,這里有一個圖示
顯然,圖中的 3i 和 3i-2 不肯能組合出為 1^3i-1 或 2^3i-1
也就是說,當 ai ≠ bi 不可能通過其他位數的改變彌補 ai - bi ,使得 A = B。
也就是說,當 A ≠ B,A 和 B轉化成的十進制數不可能相等。
延伸
既然有平衡三進制,是否平衡四進制?(平衡二進制怎么做?如果使用 0 和 -1,就和二進制沒有本質上的區別的,還是需要符號位來進行符號的判斷,因此不討論)
平衡四進制怎么分配?或許是1,0,-1,-2,或許是2,1,0,-1。
以1,0,-1,-2 來考慮。用 Z 代表 -1,用 T 代表 -2。
仿照平衡三進制,既然要使得位數都再 1,0,-1,-2 之間,因此在四進制中
遇到4,令當前位為0,下一位+1
遇到 3,令當前位為 -1,下一位+1
遇到 2,令當前位 為-2,下一位+1
遇到 1,0,直接跳過
按照這個規則
試着轉化79
轉化為四進制 1033
按步驟操作 104Z 110Z
試着轉化 103
轉化為四進制 1213
按步驟操作 102Z 11TZ
可見平衡四進制是可以實現的!
嗎?
我們會發現,平衡四進制表示的數域中,正數域和負數域不對應。而且,也不能對每個數進行取相反數的操作。如果我們選用 1,0,-1,-2,那么范圍就是 -42->21。那么,得到 22->42 的數字就有兩種方法。第一種,把 -42 -> -22 的 平衡四進制數 的 所有位數上的數字 取相反數,或者進到更高的位數來表示。可見平衡四進制並不“平衡”,它數域不對稱,而且和十進制不是一一映射。
相比之下,平衡五進制則更為簡單,更為對稱,更為美觀,只需要在 平衡三進制的基礎上加上 -2 和 2 即可。運算方法也很好推:
遇 5 化 0,下位 +1
遇 4 化 Z,下位 +1
遇 3 化 T,下位 +1
遇到0,1,2直接跳過
顯然平衡五進制和十進制一一對應,而且數域對稱,網上也有相關的資料。
百度百科平衡五進制 https://baike.baidu.com/item/%E5%B9%B3%E8%A1%A1%E4%BA%94%E8%BF%9B%E5%88%B6/53359940?fr=aladdin
思考
平衡進制和普通進制有什么區別?我們可以發現,位數相同的 n 進制數,可以表示的數字的集合大小是一樣的。
比如三位數的三進制和平衡三進制,三進制的范圍是 0->26,平衡三進制的范圍是 -13->13,集合元素個數均為 27 個。
只有當 n 是奇數的時候,我們可以構造出美麗的平衡 n 進制。
三進制還有什么優秀的性質?還有什么應用場景?或許它可以改變世界,又或許它只是一個有趣的數學游戲。而這一切都充滿未知。