posts - 403, comments - 310, trackbacks - 0, articles - 7
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

1.闭包 Closure
(1) 自反 reflexive
对称 symmetric
传递 transitive
(2) 其中,设R属于A*A(A为非空集合),则r(R) = R与A上恒等关系的并,s(R) = R与R的逆的并,
t(R) = R 并 R^2 并 R^3 并...并 R^l。
(3) rs(R) = sr(R)
rt(R) = tr(R)
st(R) 属于 ts(R)


2. 等价关系和划分
(1) 设R属于A*A,若R是自反的、对称的和传递的,则称R为A上的等价关系。
(2) 令[x]R为x的关于R的等价类,在不引起混乱时可简记为[x]。
(3) 以关于R的全体不同的等价类为元素的集合称为A关于R的商集,记作A/R。
(4) 设A为非空集合,若存在A的一个子集族S满足
a. S中不包含空集元素
b. 对于一切x,y属于S,且x,y不相等,则x与y不相交的(disjoint)
c. S中所有集合的并为A
则称S为A的一个划分,S中元素称为划分块。
(5) 非空集合A上的等价关系与A的划分是一一对应的。
(6) 第二类Stirling数,表示将n个不同的球放入r个相同的盒子中的方案数,可以由下列递归式计算:
f(n, r) = r * f(n - 1, r) + f(n - 1, r - 1)
很容易理解的一个递归式,其中初始状态为
f(n, 0) = 0, f(n, 1) = 1, f(n, 2) = 2^(n-1) - 1, f(n, n - 1) = C(n, 2), f(n, n) = 1
(7) A上等价关系的数量可以通过Stiring数求出,以A={a,b,c,d}为例
f(4,1) + f(4,2) + f(4,3) + f(4,4) = 15

posted @ 2007-07-25 11:03 ZelluX 阅读(371) | 评论 (0)编辑 收藏

命令行下使用的程序,和vim整合的很好(回复、发帖都是通过调用vim完成的)
具体配置可以参照/usr/share/doc/slrn/examples/slrn.rc.gz,第一次使用的时候需要
slrn --create生成相应的.jnewsrc文件。


posted @ 2007-07-24 20:42 ZelluX 阅读(296) | 评论 (0)编辑 收藏

CLRS上第六章的习题,以前感觉挺难的,现在仔细想了发现其实和堆是一样的。
/* Min-Young tableaus on Page 143 */
#include 
<iostream>
#include 
<iomanip>
using namespace std;

template 
<class Type>
class YTable
{
private:
    Type
** data;
    
int m, n;
    
const static int INFINITY = 9999;
public:
    YTable(
int m = 10int n = 10);
    
~YTable();
    
int Insert(Type x);
    
int FloatUp(int x, int y);
    
int Print();
    
int Extract(int x, int y, Type value);
};

template 
<class Type>
YTable
<Type>::YTable(int m, int n)
{
    
this->= m;
    
this->= n;
    data 
= new Type*[m];
    
for (int i = 0; i < m; i++)
        data[i] 
= new Type[n];
    
for (int i = 0; i < m; i++)
        
for (int j = 0; j < n; j++)
            data[i][j] 
= INFINITY;
}

template 
<class Type>
YTable
<Type>::~YTable()
{
    
for (int i = 0; i < m; i++)
        delete [] data[i];
    delete [] data;
}

template 
<class Type>
int YTable<Type>::Insert(Type x)
{
    
if (data[m - 1][n - 1!= INFINITY)
        
return 0;
    data[m 
- 1][n - 1= x;
    FloatUp(m 
- 1, n - 1);
    
return 1;
}

template 
<class Type>
int YTable<Type>::FloatUp(int x, int y)
{
    
int maxX = x;
    
int maxY = y;
    
if (x > 0 && data[x - 1][y] > data[maxX][maxY])
    {
        maxX 
= x - 1;
        maxY 
= y;
    }
    
if (y > 0 && data[x][y - 1> data[maxX][maxY])
    {
        maxX 
= x;
        maxY 
= y - 1;
    }
    
if (maxX != x || maxY != y)
    {
        swap(data[maxX][maxY], data[x][y]);
        FloatUp(maxX, maxY);
    }
    
return 1;
}

template 
<class Type>
int YTable<Type>::Print()
{
    cout.setf(ios::
fixed);
    
for (int i = 0; i < m; i++)
    {
        
for (int j = 0; j < n; j++)
            
if (data[i][j] != INFINITY)
                cout 
<< setw(3<< data[i][j];
            
else
                cout 
<< " X ";
        cout 
<< endl;
    }
    
return 1;
}

template 
<class Type>
int YTable<Type>::Extract(int x, int y, Type value)
{
    data[x][y] 
= value;
    FloatUp(x, y);
    
return 1;
}

int main()
{
    YTable
<int> myTable(44);
    
int x[] = {91632481514127111015136};
    
for (int i = 0; i < 16; i++)
        myTable.Insert(x[i]);
    cout 
<< "Initial state:\n";
    myTable.Print();
    cout 
<< "\nNow change (4,3) to 5:\n";
    myTable.Extract(
325);
    myTable.Print();
    
return 0;
}
    


posted @ 2007-07-23 17:51 ZelluX 阅读(414) | 评论 (0)编辑 收藏

先用任意的linux启动盘启动,推荐tomsrcbt,一个只有一两兆的发行版,不过我是从硬盘启动了ubuntu7.04的desktop.iso
如果非硬盘启动可能还需要先挂载原linux分区,接着使用chmod 755 /media/sda9/*修改该分区下的目录权限
重启,使用正常的模式进入ubuntu,结果发现无法在图形界面下登录,控制台中使用telnet上bbs求助后才知道还需要开放/tmp的写权限,用sudo chmod a=rwxt /tmp搞定。


posted @ 2007-07-22 17:07 ZelluX 阅读(307) | 评论 (0)编辑 收藏

移植XP下字体到Ubuntu时,其中的命令

sudo chmod 644 *

被我打成了

sudo chmod 644 /*

然后就开始痛苦了。。。

ls cd cat都不能用,firefox自动关闭,桌面图标全部变成叉,qterm里面的bbs列表也无法访问了。

最郁闷的是sudo这个命令也无法使用了,就像把钥匙留在房间里然后关上了门。

只能请教熊,貌似要用光盘才能恢复。。。

posted @ 2007-07-22 01:24 ZelluX 阅读(181) | 评论 (0)编辑 收藏

书上的例子,计算行号的,但是书中对行的定义是
line *.\n
貌似不正确,flex无法解析,改成line (.)*\n就可以了。
书上的样例也没有yywrap,写了个空函数。
%{
/* a Lex program that adds line numbers
   to lines of text, printing the new text
   to the standard output
*/
#include 
<stdio.h>
int lineno = 1;
%}
line (.)
*\n 
%%
{line} { printf (
"%5d %s", lineno++, yytext); }
%%
main()
{
    yylex();
    
return 0;
}
int yywrap()
{
    
return 0;
}
生成flex程序:flex linecount.lex
编译:gcc lex.yy.c
利用管道输入刚才的程序:cat linecount.lex | ./a.out


posted @ 2007-07-20 15:46 ZelluX 阅读(389) | 评论 (0)编辑 收藏

1. 允许将字符放在引号中作为真正的字符匹配。

例如要匹配\*可以写成\\\*,也可以是"\*"

2. 方括号中大多数元字符都可以无需引号直接引出。如("+"|"-")可以写成[-+],但不能写成[+-],因为-在中括号中可以作为表示范围的连字符。

3. 大括号可以指出正则表达式的名字,但不能递归调用。

nat [0-9]+

signedNat (+|-) ? {nat}

 

posted @ 2007-07-20 14:35 ZelluX 阅读(291) | 评论 (0)编辑 收藏

from www.BrainBashers.com
1. Intersection 横断,游戏一开始就使用的常见技巧。

Sudoku Image  Sudoku Image

2. Forced Moves 排除所有其他可能性后唯一的答案

Sudoku Image  Sudoku Image

3. Pinned Squares
Intersection 的加强版,根据更多的情况确定某一个数字在该区域的唯一可能位置。
Sudoku Image  Sudoku Image

4. Locked Sets

如图一R5C1和R6C1只能填1或8,由此可排除与他们有关的域中的其他格填1和8的可能性,从而R6C2只能填5。

Sudoku Image  Sudoku Image

posted @ 2007-07-20 11:59 ZelluX 阅读(5351) | 评论 (0)编辑 收藏

装了fcitx以后thunderbird罢工了。。。现在只能用Google groups上新闻组了,不过fcitx的确不错的说。

cs书上的一个习题,在执行i=0这样的命令时是用: xorl %edx, %edx
为什么不用 movl $0, %edx呢?
老大: 一般的说立即数的存取是内存操作,而前一条指令是寄存器操作。所以Itanium上有专门的寄存器放0.
SecretVan@smth.org: 可能跟标志位有关系,如xor清零后紧跟一个条件跳转。
先把这些回答放这,以后在回过头来看。

posted @ 2007-07-19 23:41 ZelluX 阅读(339) | 评论 (1)编辑 收藏

看到汇编中的基本运算这一节,想看看传说中的编译器把a*2优化为a<<1是不是真的呢,写了个函数试了下:
int func(int x)
{
    return x * 2;
}
用gcc -O2 -S test.c 编译,发现优化后是用了加法,而不是位移
func:
        pushl   %ebp
        movl    %esp, %ebp
        movl    8(%ebp), %eax
        popl    %ebp
        addl    %eax, %eax
        ret
BBS上问了,老大说一般加法不会慢。
又试了一下把*2改成*3,仍然是使用leal    (%eax,%eax,2), %eax进行加法操作完成的,而改成*4就使用位移了。
其他回答:
SecretVan@smth.org: CISC指令集上更倾向于选择功能一样而长度较短的指令,带了立即数之后指令就长了,如果使用寄存器那更得不偿失
Nineveh@smth.org: 因为 add 的长度短于或等于 sal,速度快于或等于 sal,吞吐量大于或等于 sal。
lib@rygh: 在P4里面我记得一条加法指令是0.5个cycle.移位指令撑死了也要0.5个cycle吧,没听说过有0.25cycle的指令。

posted @ 2007-07-19 00:51 ZelluX 阅读(362) | 评论 (0)编辑 收藏

仅列出标题
共39页: First 上一页 19 20 21 22 23 24 25 26 27 下一页 Last