歐拉道路演算法
⑴ 求演算法:歐拉路
歐拉迴路  【定義】
  圖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
