總覺得我用這種方式寫小說的話,會先寫一整頁的算式,然後就放棄了。
我對自己的作品有些要求(其實對他人也是),就是至少必須包含某種驚奇的想法,類似於魔術/謎題/遊戲/超展開之類,如果沒有寧可不寫。因此在現階段、自己還沒有成熟的點子前,會先寫這種思考性的文章。
繼上次討論推理小說中推理的構造挺不嚴謹(這篇其實也不嚴謹)的談了些推理可能用到的技巧,這次希望能討論出更實用的結論——哪些基本邏輯可以組合成其他邏輯,卻不被組合成(universal)。當然很多人都知道,and/or + not ,甚至xor + and 都能組成通用邏輯閘,但在我看來and/or本身還不夠精簡,推理跟邏輯閘也需要一些解釋才能建立連結。
會去思考這個是從桌遊開始的。我無聊開始整理桌遊會使用到的某些邏輯,增減/交換/移動/群組/屬性/對限制的加強或削弱,雖說不是最簡(不能被組合成),但更複雜的都能從這些操作產生,比如工放、區域控制等等,讓我覺得這或許是某種邏輯上的必然。
在進一步簡化後,得到三個基本的操作:
1常數:不論輸入什麼,都輸出某個符號((A->C且B->C且(A或B)) 則輸出C)
2交換:將AB的值互換
3選擇:如果...則...
其中最複雜的便是選擇了,但我沒找到化簡的方法。
交換可以看作Not,如果1則常數輸出,如果輸入0則與互補(1)交換再輸出(如果..則...就算輸出),那麼就能產生or,這樣確實是通用的。
至於比較大小,把A>B設定成A->B即可。而迴圈,推理似乎用不到。另外,變數可以用選擇代替,A的值是B可以用如果A則B表示。
話說回來,用這三個操作表示推理有甚麼好處呢?我先說一下強弱鍊,這是來自數獨的概念,強鍊不同時為假(其實就是or),弱鍊不同時為真(就是nand),推理中使用邏輯符號and or時要得出結論,靠的更多是不可能條件(強弱鍊),可以轉換成如果...則...。這三個操作不像邏輯閘,輸入輸出都只有一個,更為精簡。
如果交換是xor閘,我覺得會更貼近推理,因為任兩個輸入便能決定剩下的值,可以把xor的輸出0/1當作條件的不成立/成立。
以上有個問題,便是精簡不代表實用,我一直覺得取小(比較後更小的為真)在推理中也很基本,也許需要找到某種定義基本的方法(或許是:推理中通常直接應用這些模塊,語言上就是直接提及)。目前想到,推理方法帶來的大部分是弱化:得到一個更弱的條件,就像是化簡,而if這種我覺得比較算等價。
那麼這些到底有沒有辦法生成推理過程呢?我認為理論還是太過簡單了,只能說幫助思考,但一個精彩的推理過程幾乎都是有關現實到邏輯的轉換,我看過邏輯結構有趣的只有白井智之的藥癮偵探,水中的眼球,東京結合人間,改天研究看看這些推理的特點(前兩組模式比較像)。
最後,來討論一下<你的解謎由我作答1>裡我認為相當秀逸的推理(第一篇)。
上圖第一句是用到我所提到的取小。第三句則是直接的由作者設計證據否定。
這兩張圖的推理鍊一氣呵成,其中無論哪一邊,都有男生藏起來這個就是我提到的常數閘,我還沒看過其他作者用到這個操作。下圖紅線處也是用到常數(這張圖是來自不同篇)。
上圖用兩個不能同時成立的證據推理出留下證據的只能是不同人,相當於弱鍊。
總之,推理不會超過那三個操作(外加一個取小)。