• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 小学学习 > 正文

    优美树标号的一种算法:混泥土标号与强度算法

    时间:2019-01-21 03:29:05 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘 要:设计了优美树标号的一种算法,并写出了相应的程序,给出了顶点个数为12的树的优美标号。   关键词:优美树标号;算法;程序   中图分类号:F224--39 文献标识码:B 文章编号:1009--9166(2010)002(C)-0061-01
      
      一、基本概念
      图的标号问题:作为图论中极有趣的重要内容,有着较好的应用价值和广阔的研究前景。它的研究始于1963年G.Ringel提出如下的猜想:设T是一个给定的有n个顶点,n-1条边的树,那么由凡n-1可分解成2n-1个树同构于T。
      优美树猜想:1966年A.Rosa提出了著名的优美树猜想:所有的树都是优美的。A.Rosa还给出了更一般的结论:如果G是一个有q条边的优美图,那么由凡叶1可分解出2q+1个图同构于G。优美树猜想的发展:优美标号的概念最早是由Rosa在1967年提出的,当时他把它称作“β――valuation”,而优美标号(graceful labelling)这个名字是在1972年由Golomb提出的。优美树的猜想蕴涵了Ringel猜想:完全图K(2n+1)可以被分解为2n+1棵含有n条边的同构的树。直到现在,人们对这个猜想还是无从下手,但它仍然吸引了不少的数学家。人们通过各种各样的方法仍然得到了一些部分的结果。现在已经证明了一些特殊的树的优美性。一个例子就是毛毛虫树。如果一棵树去掉所有只连出一条边的顶点,剩下的部分没有分支的话,这棵树就被称为毛毛虫树。容易设计出一个算法可以有效地找出毛毛虫树的一个优美标号。所以我们说毛毛虫树是优美的。这样的理论上的结果还有很多,但都只针对一些非常特殊的树。目前为止得到最普遍的结论就是由P.HrnČiar和A.Haviar在2001年证明的,他们证明了所有直径等于5的树都是优美的。再加上之前的结果,我们可以知道所有直径小于等于5的树都是优美的。在这里,直径的定义就是树的任意两个顶点间的最大距离,也就是说在树上任意取两个顶点,从一个顶点沿着边走到另一个顶点至少经过的边的数目。也有数学家试图利用计算机的强大计算能力来帮助验证优美树猜想。Aldred 和McKay在1998年用计算机验证了所有顶点数小于等于27的树都是优美的。他们所使用的算法是爬坡搜索和禁忌搜索的结合体。而这个项目对他们的算法进行了重大的改进,以获得更好的速度,用于验证优美树猜想。本文就给出了应用计算机计算优美标号的方法。
      几类被证明是优美的树:(1)所有的道路都是优美的。(2)所有的毛毛虫都是优美的。(3)1979年,J.c.Bermord提出猜想因:所有的龙虾树都是优美的.有几类龙虾树已经证明是优美的。(4)Bermond和sotteau在1976年、Poljak和sura在1982年均证明了对称树是优美的。(5)A.M.Pastel和H.Raynaudlso、Aban和Bhat一Nayak[sl]证明所有的橄榄树都是优美的。(6)其他已知是优美的树:最多有4个端点的树即直径多为5的树队;最多有27个顶点的树图。
      
      二、算法描述
      任意取给定整数n,有集合V={0、1、2、3……n-1},取集合P={1、2、3、……n-1。(1)构造有序对(Ak,Bk)k=1,2,3……n-1,使Bk-Ak=k;(2)第一步,有序对为(0,1)(0,2)(0,3)……(0,n-1);(3)第二步,第一个有序对不变寻找差值为2的有序对,排在第二个位置,要求满足(1),依次类推到n-1个位置,直到找出所有符合条件的有序对;(4)第三步,改变第一个有序对,使其中两个元素差值为1,将这个有序对放到第一个位置,其余各项与(2)中一致;(5)第四步,再次执行第二步,找出所有符合条件的有序对。
      依次类推到直到找出所有符合条件的有序对。
      
      三、算法程序
      在C语言中执行此程序:
      
      // math2.cpp : Defines the entry point for the console application.
      #include
      #include
      #define SIZE 12
      const int X[4]={-1,0,-1,0};
      const int Y[4]={0,1,0,-1};
      int numtime=0;
      struct Point
      {
      int x;
      int y;
      };
      int map[20][20]={0};
      Point point[20];
      void dfs(int x,int y,int pos);
      ofstream fout("output.txt");
      void main()
      {
      point[0].x=12;
      point[0].y=1;
      int x,y;
      for( x=1;x=SIZE )
      {
      numtime++;
      point[SIZE].x=x;
      point[SIZE].y=y;
      for(int i=0;i

    推荐访问:标号 算法 优美

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章