构造函数使得任意小的区间所对应的值域都是整个实数域

    首先呢,让我们来一个牛B函数大回顾。这下我不知道要赚多少的PV。你能否构造一个函数f(x),使得:

  它是一个阶梯状的连续函数?
  它是除常函数之外的没有最小正周期的周期函数?
  该函数只在一点连续?
  该函数在[0,1]和(0,1)之间形成一一对应?
  该函数某一点导数为正,但该点邻域不构成单增区间?
  平面上任意小的圆内均包含函数上的点?

    另外还有一些可能是众所周知(所以没在Blog里写过)的函数,比如处处连续但处处不可导的函数在有理点处处不连续在无理点处处连续的函数等等。
    好了,现在呢,又一个牛B东西出现了。你能不能想出这样一个函数f,它的定义域和值域都是R,并且对于任意小的区间l=(u,v),这个函数都能把(u,v)满射到整个R上。换句话说,是否存在这样的函数f(x),对于任意一个实数t以及任意一个区间(u,v),总存在一个x满足u<x<v且f(x)=t。

Read more…

趣题:用最少的“并行交换”完成排序

    今天是10月25日。祝古汉MM生日快乐。
    曾经有一段时间这个Blog的访问量和订阅量剧增,后来才知道因为这个Blog上的一道牛B题目被出成POJ的月赛题了。那道题目真的很好玩,题目和解答都很简单有趣。其实我挺喜欢这种“给出一个算法并证明该算法最优”类型的数学题目。这里再和大家分享一个类似的比较老的题目,有兴趣的话不妨先想想再看答案。
    一次“交换”操作是指将数列中的两个数位置对换。我们假设,互不相交的若干个交换操作可以一次同时进行;换句话说,如果k个交换中任两个都不会对同一个数进行操作,那么这k个操作可以并行完成。例如,在数列

  10, 6, 8, 5, 2, 3, 1, 4, 7, 9

    中,我们可以同时交换第4个数和第6个数,第8个数和第9个数,以及第3个数和第7个数。经过这一次“并行交换”后,数列变为:

  10, 6, 1, 3, 2, 5, 8, 7, 4, 9

    任意给定一个长度为n的全排列,请问对该序列进行排序最坏情况下需要多少次并行交换?给出一种具体的算法,说明这个次数足够了;并且给出一种最坏情况,证明这个次数是必需的。

Read more…

趣题:只用赋值、自增和循环操作实现减法运算

  网友Mingliang Zhu在TopLanguage上发起提问。

  设想这样一个计算机系统,它只支持以下几个操作:
    1. 定义变量、给变量赋值;
    2. 变量自身加一;
    3. 令一段语句循环执行指定的次数。
  这个系统只处理且只能处理0和正整数。系统不存在“溢出”的问题。
  注意这个系统没有比较运算,事实上它甚至不存在Boolean值和判断语句。
  循环语句也不是FOR i=a TO b DO的形式,只能是LOOP n的形式。

  在这个系统上实现加法很容易,让a自增b次即可。现在的问题是,你能在这个系统上实现减法吗?

Read more…

趣题:如何用集合来定义有序对

    上周六的离散数学课上,我学到了一个比较有趣的东西:有序对的定义。在引入有序对之前,所有的东西都是以集合为基础的;因此当我们讨论到有序对的概念时,我们只能用集合的语言去描述它。如何用集合来叙述有序对<a,b>,使得<a,b>=<c,d>当且仅当a=c且b=d呢?集合本身的无序性给我们带来了相当大的困难。比如,大多数人可能会想到<a,b>:={a,{b}}。可惜这种定义方法是错误的。考虑集合{ {1}, {2} },则它既可以是<{1},2>,又可以表示<{2},1>。那么定义<a,b>:={a,{b,Ø}}呢?这样也不行,道理是一样的,{{1,Ø}, {2,Ø}}既可能是<{1,Ø},2>,又可能是<{2,Ø},1>。那么,到底应该怎样定义有序对呢?如何定义最简单呢?

Read more…

趣题:用最少的块移动实现逆序操作

    上次那篇日志发布之后,据说大家解题的热情相当高。Michael Brand告诉我说,他收到了很多来自中国的邮件,他感到非常高兴。在揭晓谜底之前,还是让我们先回顾一下题目:

    对数列的一次“块移动”是指把一段数取出来插入到数列中的另一个地方(说穿了就是一次选择剪切粘贴的操作)。例如,数列1,4,5,6,2,3,7可以通过一次块移动完成排序(把456挪到3后面)。那么,想要让一个1到n的逆序排列n, n-1, …, 3, 2, 1变为顺序排列,最少需要多少次块移动?给出你的算法,并证明这个移动数目不能再少了。

    需要指出的是,答案并不是n-1那么简单。当n=5时,只需要三步就可以搞定了:

 5  4 [3  2] 1
 3  2  5 [4  1]
[3  4] 1  2  5
 1  2  3  4  5

Read more…