欧拉道路算法
⑴ 求算法:欧拉路
欧拉回路  【定义】
  图G的一个回路,若它恰通过G中每条边一次,则称该回路为欧拉(Euler)回路。
  具有欧拉回路的图称为欧拉图(简称E图)。
  【相关结论】
  定理:
  一个无向图是欧拉图,当且仅当该图所有顶点度数都是偶数。
  一个有向图是欧拉图,当且仅当该图所有顶点度数都是0。 
  求欧拉回路的一种解法
  下面是无向图的欧拉回路输出代码:注意输出的前提是已经判断图确实是欧拉回路。
  int num = 0;//标记输出队列
  int match[MAX];//标志节点的度,无向图,不区分入度和出度
  void solve(int x) 
  l{ 
  l if(match[x] == 0) 
  l
  l Record[num++] = x; 
  l 
  l else 
  l { 
  l for(int k =0;k<=500;k++) 
  l { 
  l if(Array[x][k] !=0 ) 
  l { 
  l Array[x][k]--; 
  l Array[k][x]--; 
  l match[x]--; 
  l match[k]--; 
  l solve(k); 
  l } 
  l 
  l } 
  l Record[num++] = x; 
  l } 
  l} 
  注意record中的点的排列是输出的到序,因此,如果要输出欧拉路径,需要将record倒过来输出。
  求欧拉回路的思路:
  循环的找到出发点。从某个节点开始,然后查出一个从这个出发回到这个点的环路径。这种方法保证每个边都被遍历。如果有某个点的边没有被遍历就让这个点为起点,这条边为起始边,把它和当前的环衔接上。这样直至所有的边都被遍历。这样,整个图就被连接到一起了。
  具体步骤:
  1。如果此时与该点无相连的点,那么就加入路径中
  2。如果该点有相连的点,那么就列一张表,遍历这些点,直到没有相连的点。
  3。处理当前的点,删除走过的这条边,并在其相邻的点上进行同样的操作,并把删除的点加入到路径中去。
  4。这个其实是个递归过程。
--以上为网络的内容
⑵ 欧拉的算法
这是个没有通常意义极限的病态级数,比如:
(1-1)+(1-1)+..+(1-1)+...=0
1+(-1+1)+(-1+1)+... =1
根据1+x+...+x^n+..=1/(1-x),虽然收敛域(-1,1),但把(-1)代进去就得到1/2,又是另一种答案
在数学分析的高级教程中应该对这种病态级数的和有一个严格定义,使得计算出的结果唯一。但我对这方面的知识也不了解。你可以去找找相关资料。
⑶ 急求c++fleury算法欧拉回路代码
1#include <stdio.h>
 2#include <string.h>
 3
 4
 5struct stack
 6{int top , node[210];} f; //顶点的堆栈
 7
 8int a[201][201]; //图的邻接矩阵
 9
10int n;
11
12void dfs(int x)       //图的深度优先遍历
13{
14int i;
15
16f.top ++; f.node[f.top] = x;
17
18for (i = 1; i <= n; i ++)
19
20          if (a[i][x] > 0)
21          {
22              a[i][x] = 0; a[x][i] = 0;     //删除此边
23
24              dfs(i);
25
26              break;
27          }
28}
29
30void Euler(int x)     //欧拉路算法
31{
32int i , b;
33
34f.top = 0; f.node[f.top] = x;     //入栈
35
36while (f.top >= 0)
37{
38          b = 0;
39
40          for (i = 1; i <= n; i ++) 
41    if (a[f.node[f.top]][i] > 0) 
42    {b = 1; break;}
43
44          if (b == 0)       //如果没有点可以扩展,输出并出栈
45          {
46              printf("%d " , f.node[f.top]);
47
48              f.top --;
49          }
50          else {f.top --; dfs(f.node[f.top+1]);}        //如果有,就DFS
51      }
52}
53
54int main()
55{
56
57int m , s , t , num , i , j , start;
58
59      //input
60
61      scanf("%d %d" , &n , &m); //n顶点数    m边数
62
63      memset(a , 0 , sizeof(a));
64
65      for (i = 0; i < m; i ++)
66      {
67          scanf("%d %d" , &s , &t);
68          a[s][t] = 1; a[t][s] = 1;
69      }
70
71
72      //判断是否存在欧拉回路
73
74      s = 0; start = 1;
75
76      for (i = 1; i <= n; i ++)
77      {
78          num = 0;
79
80          for (j = 1; j <= n; j ++)
81              num += a[i][j];
82
83          if (num % 2 == 1) 
84{start = i; s ++;}
85      }
86
87      if ((s == 0) || (s == 2)) 
88Euler(start);
89      else printf("No Euler path\n");
90
91      getchar(); getchar();
92      return 0;
93}
94
⑷ 欧拉路径
用邻接表写的标准算法,有重边也无所谓。
⑸ 什么是牛顿—欧拉法
牛顿—欧拉动力学法:利用牛顿力学的刚体力学知识导出逆动力学的递推计算公式,再由它归纳出机器人动力学的数学模型——机器人矩阵形式的运动学方程;
拉格朗日法:引人拉格朗日方程直接获得机器人动力学方程的解析公式,并可得到其递推计算方法。一般来说,拉格朗日法运算量最大,牛顿—欧拉算法次之,凯恩法运算量最小、效率最高,在处理闭链机构的机器人动力学方面有一定的优势。
⑹ 改进欧拉法的欧拉算法
所谓数值求解,就是求问题的解y(x)在一系列点上的值y(xi)的近似值yi。对于常微分方程:
可以将区间[a,b]分成n段,那么方程在第xi点有y'(xi)=f(xi,y(xi)),再用向前差商近似代替导数则为:(y(xi+1)-y(xi))/h= f(xi,y(xi)),在这里,h是步长,即相邻两个结点间的距离。因此可以根据xi点和yi点的数值计算出yi+1来:
yi+1= yi+h*f(xi ,yi),i=0,1,2,L
这就是欧拉公式,若初值yi+1是已知的,则可依据上式逐步算出数值解y1,y2,L。
为简化分析,人们常在yi为准确即yi=y(xi)的前提下估计误差y(xi+1)-yi+1,这种误差称为局部截断误差。
如果一种数值方法的局部截断误差为O(h^(p+1)),则称它的精度是p阶的,或称之为p阶方法。欧拉格式的局部截断误差为O(h^2),由此可知欧拉格式仅为一阶方法。

⑺ 图论中,求欧拉路径的算法有哪些
首先要根据欧拉路径的存在条件来判断一个图是否存在欧拉路径,判断条件为如下3条
对于一个无向图,如果它每个点的度都是偶数,那么它存在一条欧拉回路;
如果有且仅有2个点的度为奇数,那么它存在一条欧拉路;
如果超过2个点的度为奇数,那么它就不存在欧拉路了。
然后可以用Fleury算法求欧拉路径,可以参照
http://www.cnblogs.com/Lyush/archive/2013/04/22/3036659.html
