Graph 如何删除边以使图成为二部图?

Graph 如何删除边以使图成为二部图?,graph,bipartite,Graph,Bipartite,我有一个图,它可能(也可能不)包含一组使它成为二部的边。我如何才能发现是否存在这样的集合 在BFS遍历过程中删除特定级别中的所有边会有帮助吗?因为任何二部图也是2-色的,所以您可以使用检查此特性的任何算法。例如,您可以使用基于回溯的算法对BFS进行回溯。一般来说,它可能是这样的: 假设图是二分的,顶点可以分为A组和B组。选择一个源顶点,将其涂成红色(A组)。然后将所有相邻顶点涂成蓝色(B组),然后将这些相邻顶点涂成红色。如果在着色过程中发现与当前顶点具有相同颜色的相邻点,则该相邻点不是2-可着

我有一个图,它可能(也可能不)包含一组使它成为二部的边。我如何才能发现是否存在这样的集合


在BFS遍历过程中删除特定级别中的所有边会有帮助吗?

因为任何二部图也是2-色的,所以您可以使用检查此特性的任何算法。例如,您可以使用基于回溯的算法对BFS进行回溯。一般来说,它可能是这样的:


假设图是二分的,顶点可以分为A组和B组。选择一个源顶点,将其涂成红色(A组)。然后将所有相邻顶点涂成蓝色(B组),然后将这些相邻顶点涂成红色。如果在着色过程中发现与当前顶点具有相同颜色的相邻点,则该相邻点不是2-可着色的,因此不是二部的。这可能无法涵盖所有细节,但您应该了解这一点。

该图最初不是二部图。我需要看看,如果我可以删除一些边缘,使它成为两部分哦,对不起,现在我明白你的问题,它不是那么清楚,我与最初的职位。Paul Erdös表明,任何具有e边的图都包含至少具有e/2边的二部子图。我不记得它是在哪里出版的,但是你应该很容易在互联网上找到它。如果我记得,任何一个图的割都是二部的,所以如果你真的想找到一个,你可能只需要一个算法,得到最大割。