美文网首页
2019-05-23欧拉道路

2019-05-23欧拉道路

作者: 咣超 | 来源:发表于2019-05-23 14:51 被阅读0次
package 图;
import java.util.Stack;
public class Code_欧拉道路 {
    // 这些图的问题最核心的就是如何将它们抽象成一张图
    // 欧拉道路指的是一笔画问题欧拉回路(七桥问题是无解的)
    // 这个欧拉道路通俗来说就是解决一个图形能不能一笔画成的问题 首先
    // 将这张图抽象成一张表然后检查是否 最多有两个奇点 一个也可以
    // 少于一个或者大于两个就不存在欧拉道路 而且这个一笔画的路线必须是从
    // 奇点开始可能从奇点结束(如果它存在两个奇点的话)  检测奇点的话我们只需要
    // 在这张图中那些点到另外点的路线数为奇数就可以了
    static int[][] graph = {
            {0, 1, 0, 1, 0},
            {1, 0, 1, 1, 0},
            {0, 1, 0, 1, 0},
            {1, 1, 1, 0, 1},
            {0, 0, 0, 1, 0}
    };
    static int n = graph.length;
    static int[][] vis  = new int[n][n];
    static Stack<String> stack = new Stack<String>();
    // 因为是无向图 如 A--C的路和C--A的路是不一样的这是两条路了
    // 但是在抽象到邻接矩阵上其实就是一条路
    public static void dfs_ouler(int k) {
        for(int i = 0; i < n; i++) {
            if(graph[k][i] > 0 && graph[k][i] > vis[k][i]) { 
                vis[k][i]++;
                vis[i][k]++;
                // A C间有一条路那么这条路可以表示为A走到C也可以从C走到A
                // 因为是无向图两个节点中路是没有方向的那么在邻接矩阵中 k i i k 两点表示的是一条路
                // 所以需要标记两个位置的点 另外当两个节点中存在两条路时从首先的这个节点走到另一个节点
                // 他们之间的一条路被标记 k i, i k 被标记但是到第二次实际上还是这两个点被标记从逻辑上
                // 来说这两个点就不存在路了就是你需要形象化的思考一下其实我们将这些"无向"图抽象成邻接矩阵之后
                // 不管你两个点中有多少条路其实我们每次走的都是同一条路只是相对于标记来说的这也就不可能存在两个点
                // 中存在多条路会重复走一条路的现象
                dfs_ouler(i);
                stack.push((char)('A' + k) + "->" + (char)('A' + i));
                // 打印路径
            }
        }
    }
    public static void main(String[] args) {
        dfs_ouler(4); // 你输出不是奇点的数是没有意义的
        while(!stack.empty()) {
            System.out.println(stack.pop());
        }
    }
···

相关文章

  • 2019-05-23欧拉道路

  • 2018-12-05 第十三章 欧拉图与哈密顿图

    13.1 欧拉图与中国邮递员问题 1.设G是一个无向图,包含G的每条边的简单道路称为欧拉道路,包含G的每条边的简单...

  • 假如用MC大片的形式来打开同学之间打架

    “欧拉欧拉欧拉欧拉欧拉欧拉欧拉……” “啊哒哒哒哒哒哒哒哒哒哒哒……” “你们在干嘛呀喂...

  • 第一天

    utellm I said lololololol 欧拉欧拉欧拉欧拉 wryyyyyyyyyyyyyyy

  • 欧拉回路

    欧拉通路与欧拉回路 欧拉通路: 对于图G来说,如果存在一条通路包含G中所有的边,则该通路成为欧拉通路,也称欧拉路径...

  • 欧拉路径和Hierholzer算法

    内容概要: 欧拉回路和欧拉路径 Hierholzer算法求解欧拉回路和欧拉路径 欧拉回路的应用:LeetCode7...

  • 欧拉妈的亲子反思之一

    我的阿匝西(欧拉妈初识欧拉爹时送给欧拉爹的韩国名字)自从升级为欧拉爹之后可谓"鞠躬尽瘁",在朋友圈里被"明明...

  • 欧拉

    (void) test15 {NSInteger arr[21] = {0};arr[0] = 1;for (in...

  • 欧拉

    莱昂哈德·欧拉小时候他就特别喜欢数学,不满10岁就开始自学《代数学》。这本书连他的几位老师都没读过,可小欧拉却读得...

  • 啦啦啦

    欧拉

网友评论

      本文标题:2019-05-23欧拉道路

      本文链接:https://www.haomeiwen.com/subject/vlavzqtx.html