实数空间r,怎么求z为整数集作为子空间的拓扑为

Python017

实数空间r,怎么求z为整数集作为子空间的拓扑为,第1张

按照定义来求即可:

实数空间可由绝对值“|·|”诱导产生拓扑τ={R中的全体开区间}(当然包括空集),子集Z={全体整数},那么τ_Z={U∩Z|U∈τ}=2^Z(Z的幂集,即Z的子集的全体)为所求的子空间拓扑。

开集的定义是集合A中的每一个点都是内点,对于有理数集Q,任取Q中一点r,由于有理数和无理数在R上都是稠密的,所以不可能找到r的一个邻域(a,b),使得在(a,b)内的任意点都属于Q(就是说一个有理数的任何邻域内都存在无理数),r不是内点,所以Q不是开集。对于闭集,通常有不同的定义,一个等价的定义是,集合A满足条件A‘包含于A,这里A’表示A的所有极限点构成的集合,称为A的导集,来看有理数集Q,从Q中取一系列数r1,r2...rn,这个有理数序列{rn}的极限不一定是有理数(事实上我们就是借助有理数序列来定义无理数的),例如有理数序列1,1,4,1.41,1.414...的极限是无理数√2,因此Q‘是不可能包含于Q的。所以Q也不是闭集。有不明白的地方欢迎追问。

程序运行结果:

1-3->2->4->5

对应楼主的图数据为:

5 7

1 2

1 4

1 3

2 4

3 4

4 5

2 5

代码:

#include <cstdio>

int next[100],first[100],en[100],ru[100],n,m,dl[100],head=0,tail=0

int main()

{

                freopen("t2.in","r",stdin)

                scanf("%d%d",&n,&m)//读入顶点数和边数

                for (int i=1i<mi++)//读入有向边

                                {

                                                int x,y

                                                scanf("%d%d",&x,&y)

                                                next[i]=first[x]

                                                first[x]=i

                                                en[i]=y

                                                ru[y]++

                                }

                //用队列来进行拓扑排序

                for (int i=1i<=ni++)//找到入度为0的点入队

                                if (ru[i]==0)

                                                {

                                                                ru[i]==-1//将这个点去掉。

                                                                dl[++tail]=i//入队

                                                }

                while (head<tail)

                                {

                                                int x=dl[++head]

                                                int p=first[x]

                                                while (p!=0)//和这个点相连的边删去

                                                                {

                                                                                int y=en[p]

                                                                                ru[y]--//则对应的点的入度会减少

                                                                                if (ru[y]==0)//如果再次找到了入度为0的点则入队

                                                                                                {

                                                                                                                ru[y]=-1

                                                                                                                dl[++tail]=y

                                                                                                }

                                                                                p=next[p]

                                                                }

                                }

                //最后直接输出整个队列元素,从1到尾

                int flag=0

                for (int i=1i<=taili++)

                                if (!flag)

                                                {

                                                                flag=1

                                                                printf("%d",dl[i])

                                                }else printf("->%d",dl[i])

                printf("\n")

                return 0

}