标题：皮亚诺曲线
皮亚诺曲线
皮亚诺（Peano）曲线是一条能够填满正方形的曲线。在传统概念中，曲线的数维是1维， 正方形是2维。
1890年，意大利数学家皮亚诺（Peano G）发明能填满一个正方形的曲线，叫做皮亚诺曲线。皮亚诺对区间[0，1]上的点和正方形上的点的对应作了详细的数学描述。实际上，正方形的这些点对于t∈[0,1],可规定两个连  续函数x=f(t）和y=g(t），使得x和y取属于单位正方形的每一个值。后来，希尔伯特作出了这条曲线。
一般来说，一维的东西是不可能填满2维的方格的。但是皮亚诺曲线恰恰给出了反例。
这说明我们对维数的认识是有缺陷的，有必要重新考察维数的定义。这就是分形几何考虑的问题。在分形几何中， 维数可以是分数叫做分维。
此外皮亚诺曲线是连续的但处处不可导的曲线。因此如果我们想要
研究传统意义上的曲线， 就必须加上可导的条件，以便排除像皮亚诺曲线这样的特例。
一些不同观点
1877年，数学家康托提出了从一维到二维的一一映射，后来这个结论得到了另外一些数学家的支持，包括皮亚诺、希尔伯特等。但也有一些数学家对此持怀疑或反对的态度。最著名的就是与康托一起对实数做出定义的数学家狄特金（又译戴德金），他对康托的结论一直持反对意见，并指出了康托最初证明中的一些错误。另外，后来数学家Juergens又证明了，如果平面和直线之间的对应是连续的，则不可能是一一对应。
下面一种观点认为，皮亚诺曲线等是和实数的不可数性相矛盾的。
===1 十进制数和罗素悖论===
关于康托的集合论，罗素于1901年提出了一个悖论，指出一个包含自指的集合将导致逻辑上的混乱。分析发现，在康托对实数的定义中也包含了罗素悖论。康托对实数的定义是[1]：
“1872年，康托在一篇文章中，用一章的篇幅专门讨论实数问题，特别是无理数问题。他为自己提出了一个目标，在不预先假定无理数存在的条件下，建立一个令人满意的无理数理论。显然，全体的有理数集合为此提供了一个基础。康托用有理数的无穷序列来定义无理数及它们之间的顺序关系。
定义：无穷序列
（2.12） a1,a2,...,an,...
称为一个基本序列，如果对任何有理数值e，都存在一个整数N，使得对任何n> N和任何m，有
{an+m - an} < e.
如果序列是一基本序列，则说它有一个确定的极限，假定用b来表示。于是每个基本序列就有一个确定的符号b与之相联。康托使用“符号”一词来形容b的作用。
……
常数序列显然是一个基本序列，并恰好以a为极限。……
康托希望将有理数域A的算术运算推广到这些新数b构成的域B上，并放弃“符号”一词改用“数”称呼B中的元素。……
尽管“数”的术语的使用十分自然，但仍有关于由A生成的域B的性质及它们的存在性的哲学问题。康托认为B中的数本身是无意义的，它们只具有一种与序列相联系的客观实在性。显然这种实在性不同于域A中有理数所具有的客观性。一个B中的元素被考虑，仅仅为了某种方便之故，仅仅由于它代表了一个基本序列。”
分析上面对实数的定义，每个实数域中的数实际上是一个有理数的序列，所以有：
⑴对实数域的任一有理数a，a按定义等于一序列；
⑵对实数域的任一无理数b，b按定义等于一序列{b1,b2,...,bn,...}。
从集合论的观点来看，由于数的序列对应的是数的集合，而不是数元素本身，即使形如⑴中只有一个元素的序列对应的也应该是一个数的集合。上面对有理数的定义显然构造了一个包含自指的集合：数a等于一个集合，这个集合中有一个元素，就是数a本身。这样的集合包含了罗素悖论[2]。
虽然在康托对实数的定义中，对无理数的定义部分却没有包含类似的悖论。这里仍将认真讨论康托对无理数的定义，因为这个定义常被理解成包含罗素悖论的形式出现，第二节将举出一些包含这种错误的例子。
在定义中，无理数代表的基本序列中的元素都是有理数，显然按定义无理数作为极限点不在无穷序列里。可以用归纳法证明，无理数作为极限点不在基本序列里有数学依据，而不是出于人为的定义。例如，对于pi的序列：
= {3.1， 3.14， 3.141， 3.1415， 3.14159， 3.141592， 3.1415926， ……}
令m表示0到9的整数，把序列中的一个小数表示成其前一个小数与尾数相加的形式（如3.14 = 3.1 + 0.04），则：
⑴ P1 = 3.1，为一个有理数；同时10^1为整数，而m/10^1为两个整数相除的形式，按有理数的定义两个整数相除商为一个有理数；
⑵ 对任意属于自然数的n，设m/10^n为有理数，则m/10^（n+1），亦为两整数相除，所以m/10^（n+1）为有理数；
设Pn为有理数。则P(n+1）为Pn+m/10^(n+1）的形式，为两个有理数相加，所以P(n+1）为有理数；
⑶ 所以序列中任意元素为有理数。归纳法证明的是这个无穷序列中所有元素的性质，所以这个序列的极限点作为一个无理数不在序列里。
无理数对应的基本序列中包含无穷多个元素，讨论能不能多加一个极限点似乎有点诡辩。但这涉及到有理数域中的四则运算是否封闭，以及对无理数的定义是否包含罗素悖论。而且，由于所有无理数都是有理数集的极限点[3]，分清基本序列和极限点的关系可以避免把有理数集当成实数集。
这一节分析了康托对实数的定义，指出在实数域中对有理数的定义包含了罗素悖论。同时指出，按康托的定义，无理数作为基本序列的极限点并不在基本序列中。
下面将讨论皮亚诺曲线等一维到二维映射的曲线。因为一维与二维之间的关系，与可数无穷多与不可数无穷多的关系类似；或者说可以通过作截线的方法，把一维与二维之间的关系转化为可数无穷多与不可数无穷多的关系，所以在进一步讨论前先总结一下可数无穷多与不可数无穷多的关系：
⒈ 可数无穷多和不可数无穷多之间不能建立一种一一对应的关系；
⒉ 康托在从包含可数无穷多元素的集合出发，用取极限的方法去定义包含原始集合且自己元素为不可数无穷多的新集合时，在对前者集合的元素的定义包含了罗素悖论。
第二节将讨论皮亚诺曲线有没有覆盖整个平面，第三节将讨论皮亚诺曲线有没有建立一种从一维到二维的映射，第四节将讨论康托的从一维到二维的映射。
===2 皮亚诺曲线和实数的不可数性===
1877年，康托给出了从一维到二维的一一映射[1]。皮亚诺和希尔伯特分别于1890年和1891年给出了一种可以充满整个平面的曲线[4][5]。下面先讨论皮亚诺曲线。
皮亚诺曲线由一个大正方形分成9个小正方形，再不断的把每个小正方形分成更小的正方形得到的边组成的曲线，如图一⑴～⑶所示。这实际上是一个递归过程。也可认为皮亚诺曲线是在上面基础上把小正方形的中心点连接起来得到的曲线，如图一⑷所示。这两种表示方法在本节的讨论中并没有区别，在下面的过中位线作截线的过程中可以发现，这两种曲线与截线的交点是一一对应的。为了方便在坐标系中讨论，这里采用的是图一⑴～⑶所示的形式。
Image:Peano_Curve.JPG 
图一，皮亚诺曲线
过原正方形的中位线作一条数轴，并假设数轴上位于正方形内的区间是[0,1]。然后用递归过程生成皮亚诺曲线，并在递归过程中按产生的先后顺序对皮亚诺曲线和中位线的交点进行编号。这样每个交点都有一个编号。如果皮亚诺曲线覆盖了整个正方形的话，那么交点应该覆盖了整条中位线。因为线段上的点和[0,1]之间的实数有一一对应关系，而标号和自然数集有一一对应关系，所以这就意味着[0,1]之间的实数和自然数的一个一一对应。这和实数的不可数性是相矛盾的。显然问题的焦点是，皮亚诺曲线与中位线的交点是覆盖了整个[0,1]区间，还是只覆盖了[0,1]中的有理数点。
下面在坐标系中进一步讨论这个问题。为了方便在十进制中讨论，假设每个大正方形分裂成100个小正方形，即每个正方形分裂后与其中位线产生9个交点。把第一次分裂得到的交点记为s1，把第二次分裂得到的交点记为s2……这就得到了一个序列{s1,s2,...,sn,...}，序列中任一元素sn又为一个数的序列：
s1:
0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9
s2:
0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09
0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.19
......
0.91,0.92,0.93,0.94,0.95,0.96,0.97,0.98,0.99
s3:
0.001,0.002,0.003,0.004,0.005,0.006,0.007,0.008,0.009
0.011,0.012,0.013,0.014,0.015,0.016,0.017,0.018,0.019
......
如果皮亚诺曲线和中位线的交点覆盖了整条中位线的话，那么序列{s1,s2,...,sn,...}也就覆盖了实数区间[0,1]。又由于序列中的每个元素sn包含有限个数，所以把每个元素代表的数序列代入后，序列{s1,s2,...,sn,...}就等于一个[0,1]区间中所有的实数组成的一个序列。这和实数的不可数性是矛盾的。
有一点需要明确一下，就是无穷序列的构造过程以及对无穷序列取极限的过程的关系。我们已经知道[0,1]区间中有理数有可数无穷多个，可以用一个递归的无穷过程来产生这些有理数；而[0,1]区间中的无理数都是有理数集合的极限点。但有理数集和无理数集显然是不一样的。这就是说，构造有理数集的无穷过程并不包括取极限的过程，不能认为取极限的过程一定包含在无穷过程中。否则，按第一节的论述，对无理数的定义将包含罗素悖论。事实上，许多宣称找到了实数可数证据的例子都是犯了认为无穷过程一定包含取极限过程的错误。
对皮亚诺曲线，取极限后得到的图形是一个完整的正方形。由于对集合取极限操作的过程不能保持一一对应关系，所以这并不足以证明皮亚诺曲线建立了一种从曲线到平面的一一映射。在取极限前，皮亚诺曲线与中位线的交点包含了[0,1]中所有有理数，这时候皮亚诺曲线完成的是构造基本序列的过程，图形是曲线但不是一个平面；取极限后，图形将覆盖整个平面，这时中位线与图形的交点是整条线段。因为我们知道在取极限前，图形与中位线的交点是可数无穷多个，取极限后交点是不可数无穷多个，这两者之间并不能够建立一一对应关系，所以除非有特别的论证，否则不能从取极限前是曲线而取极限后是平面就得出曲线和平面有一一对应的关系。
事实上，由于产生皮亚诺曲线的过程是递归过程，而递归过程与自然数是一一对应的，在理论上这个过程产生的图形与中位线之间的交点只能是可数无穷多，而不可能是不可数无穷多[3]。
这样，对于平面上坐标为无理数对的点，如（sqrt⑵-1，sqrt⑵-1），既不能被皮亚诺曲线的横边所覆盖，也不能为纵边所覆盖。
这节论述了皮亚诺曲线没有覆盖整个平面。这个问题的焦点在于定义无理数的基本序列有没有包括极限点：如果包括了极限点，那么构造了基本序列就等于所有有理数和无理数；如果不包含极限点，那么构造了基本序列等于只构造了有理数。
===3 希尔伯特曲线的编码映射===
上节论述了皮亚诺曲线没有覆盖整个平面。那么能不能仿照康托从有理数集出发去定义无理数集的例子，借助皮亚诺曲线来建立一种从曲线到平面的一一映射呢？希尔伯特曲线中的编码映射就是这样的一个例子。
希尔伯特曲线通过把一个正方形不断大的分成4个小正方形，再把小正方形的中心点连接起来得到的曲线，即希尔伯特曲线[6]。把第一次分裂得到的曲线称为H-1，第二次分裂得到的称为 H-2，……；把H-1与y轴的交点（也即H-1的中点）称为H-1（1/2），H-2与y轴的交点称为 H-2（1/2）……。如图二所示。注意，为了讨论方便，上一节讨论的是小正方形的边组成的曲线，这节讨论的是连结小正方形中心得到的曲线。由于正方形的边和中位线有一一对应关系，这两种表示方法在一定程度上是相同的。
图二，希尔伯特曲线
在希尔伯特曲线的编码映射中，对分成的4个小正方形按顺时针顺序进行二进制编码，为0.00，0.01，0.10，0.11。后面的分裂同样在前面编码的基础上加上2位二进制小数，如第一格第二次分裂后，得到的4个小正方形编码为0.0000，0.0001，0.0010，0.0011。这样就给正方形中的每个点一个[0,1]中的编码，也就是完成了从1×1的平面到[0,1]区间的一一映射。
分析这种编码方法，实际上也是用收敛的点序列来定义一个点，例如正方形的中心点，是由序列{H-1（1/2），H-2（1/2），...,H-N（1/2），...}来定义的，也就是正方形中心点对应在[0,1]中的为1/2。按照第一节的论证，这种方法在定义基本序列中的点时要发生错误。如果严格按极限的定义，上面序列中的所有元素，H-1（1/2），H-2（1/2），...,H-N（1/2），...，这些点都是常数序列（即它自己一个元素组成的序列）的极限点，也都该对应于[0,1]中的为1/2。这就是说，1/2在平面中对应的不是一个点，而是有无穷多个点。
另外，可以用反证法证明，希尔伯特曲线并没有建立一种从曲线到平面的一一对应关系。假设曲线的坐标区间为[0,1]（即假设曲线的长度为1），并对于正方形中位线y轴上的某一点p，有曲线上的数x属于[0,1]映射到p点。由于希尔伯特曲线是左右对称的，则立即可以得到数（1-x）也映射到p点。又由于这种映射是一一映射，所以有x=1-x=1/2，即与1/2对应的是y轴上的一条线段，这与前面的一一对应假设矛盾。
这节讨论了无法利用希尔伯特曲线的编码映射来完成从1×1的平面到[0,1]区间的一一映射。
===4 康托的从一维到二维的映射===
康托提出了一个从一维到二维的一一映射[1]：
假设y为一个实数，且：
y = 0.a1 b1 a2 b2 …… an bn ……
则令：
x1 = 0.a1 a2 …… an ……
x2 = 0.b1 b2 …… bn ……
这样就完成了从y到（x1，x2）的映射。
实际上，上面的证明过程使用了递归方法。正如第一节所论述，递归方法所论证的只能是基本序列中的元素，而基本序列的极限点不一定包含在基本序列里。所以这个证明只对有理数有效。
===5 小结===
这种观点指出，在康托用有理数的基本序列去定义实数中，实数域中的一个有理数a按定义等于序列，这实际上构造了一个包含自指的集合：数a等于一个集合，这个集合中有一个元素，就是数a本身。这样的集合包含了罗素悖论。本文还分析了皮亚诺曲线等一维到二维映射的例子，指出它们实际上也包含了上述悖论。