<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Philosophy on Jason Swift's blogs</title><link>https://anemele.github.io/blog/tags/philosophy/</link><description>Recent content in Philosophy on Jason Swift's blogs</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 13 Jul 2026 22:46:33 +0800</lastBuildDate><atom:link href="https://anemele.github.io/blog/tags/philosophy/rss.xml" rel="self" type="application/rss+xml"/><item><title>停机问题与矛盾浅论</title><link>https://anemele.github.io/blog/post/2026/07/the-halting-problem-and-paradox/</link><pubDate>Mon, 13 Jul 2026 22:46:33 +0800</pubDate><guid>https://anemele.github.io/blog/post/2026/07/the-halting-problem-and-paradox/</guid><description>&lt;p&gt;昨天想起停机问题，一直以为是否停机只与“机”的内部构造有关，导致思索无果。今天查询一下才知，停机问题有两个因素：机和输入。
这很好理解，例如以下函数输入 0 停机，其他不停机：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;f&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;cond&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cond&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;停机问题是期望找到一个工具，判断任意机在任意输入下是否停机。
停机问题已被证伪，也就是不存在这样的工具。可以用反证法证明。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「停机」更像动词，准确说是「能停机」。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;假设存在这样的工具，用代码描述为&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="nf"&gt;halt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;any_f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;any_input&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;根据假设，&lt;code&gt;halt&lt;/code&gt; 对于任意输入停机，那么 &lt;code&gt;halt(f, f)&lt;/code&gt; 也停机。
可以构造这样一个机&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;my_f&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;halt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也就是输入停机时不停机，输入不停机时停机。那么 &lt;code&gt;my_f(my_f)&lt;/code&gt; 是否停机呢？&lt;/p&gt;
&lt;p&gt;这是一个悖论，导出矛盾，假设不成立，即不存在符合要求的 &lt;code&gt;halt&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这个问题属于自指矛盾，与著名的“理发师悖论”、“罗素集合论悖论”同理。
细细研究自指矛盾，其实有解，核心思路是动态求解。&lt;/p&gt;
&lt;p&gt;理发师悖论怎解？引入时间。
理发师给自己理发前，属于“不给自己理发”的人，那么他要给自己理发，理发后，属于“给自己理发”的人，那么就不再给自己理发。&lt;/p&gt;
&lt;p&gt;理发师的属性是动态变化的，不能倒果为因，用假设未来约束现在。可能有人问，理发过程中怎么算？这个简单，理发是原子操作，不可中断。&lt;/p&gt;
&lt;p&gt;罗素悖论同理，当集合 &lt;code&gt;S&lt;/code&gt; 包含自身，那就不包含它；不包含自身时就包含它。&lt;/p&gt;
&lt;p&gt;这似乎只是复述一下悖论，不错，关键在于将静态视角转到动态。通常追求静态结论，遇到冲突就成了悖论，如果以动态结论看待，悖论很平常。&lt;/p&gt;
&lt;p&gt;矛盾是动态的，是无限的，是高能态。
矛盾是世界变化的动力根源。
遇到难解问题，不妨跳出静态和谐的幻想，追寻动态平衡的永恒。&lt;/p&gt;</description></item></channel></rss>