Eulerian Path ในกราฟไม่มีทิศทาง (Undirected Graph) เงื่อนไข:
- กราฟต้อง connected
- ไม่มี vertex คี่เลย = Euler Circuit (ซึ่งก็เป็น Euler Path)
- มี vertex คี่เพียง 2 จุด = Euler Path
- มากกว่า 2 จุด = ไม่มี Euler Path
อัลกอริทึม
- DFS เช็ค connectivity
- นับ degree ของแต่ละ vertex
- นับจำนวน vertex ที่มี degree คี่
โค้ดสำคัญ
int isEulerian() {
if (!isConnected()) return 0;
vector<int> degree(NODE, 0);
int oddDegree = 0;
for (int i=0; i 2) return 0;
return 1; // 0 = circuit, 2 = path
}
ผลลัพธ์
The graph has Eulerian path.