
組合爆炸的纖細聲音…
|
169
這只是兩個小狀況,代表最短與最長的查詢。倘若我們繼續這個設計來包含分配到部門
的資產以及分配到成本中心的產品,那麼我們也需要擁有對所有狀況的查詢。每個查詢
的層級都增加了組合爆炸(combinatorial explosion),以及許多關於設計的問題。
若我們將分配的規則改變會發生什麼事情呢?若一個產品可以跳過部門直接分配到一個
成本中心會如何?當系統中的資料量增加時,查詢還會有效率嗎?這個系統可以被測試
嗎?真實世界的分配模型也會包含更多的實體以及關係,這讓事情變得更糟。
組合爆炸的纖細聲音…
我們使用了幾頁來講述問題,以及描繪出粗略的解決方案,但想像一個這樣的真實系
統,經由一個團隊的人使其經年累月的持續進化。複雜度很容易會被忽略,要不然就是
會將其單純的視為是問題本質所造成的。
一個系統可以從簡單開始,但非常快的會變得複雜。這個事實已經在複雜系統與細胞自
動機(cellular automata)的研究中被深入的瞭解過了。若要看這個想法的實際行動,藉
由從兩個簡單的物件開始,試想一個用來定義複雜圖形物件的經典技巧:
“從兩個形狀開始,一個是起始元(initiator)而一個是生成元
(generator)... 建構的每個階段都是從一條線開始,將其分為三等
分,並且將中間的部分使用生成元置換,然後將生成元的底邊移除,
讓被置換掉的部分仍然能夠擁有相同的起終點。”
— Benoît Mandelbrot
1
這個演算法經過三次遞迴之後,就能夠產生廣為人知的 ...