﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-ZMars-随笔分类-图论</title><link>http://www.cppblog.com/zzfmars/category/14376.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 02 Aug 2010 19:30:30 GMT</lastBuildDate><pubDate>Mon, 02 Aug 2010 19:30:30 GMT</pubDate><ttl>60</ttl><item><title>求割顶－－ZJU1311(点击查看割顶和块的模板代码)</title><link>http://www.cppblog.com/zzfmars/archive/2010/08/01/121900.html</link><dc:creator>ZMars</dc:creator><author>ZMars</author><pubDate>Sun, 01 Aug 2010 13:24:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2010/08/01/121900.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/121900.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2010/08/01/121900.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/121900.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/121900.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">割顶：<br>连通图G的一个顶点子集V，如果删除这个顶点子集和它所附带的边后，图便不再连通。则称V是G的割顶集。<br>最小割顶集中顶点的个数，称为G的连通度。连通度等于1时，割顶集中的那个顶点叫做割顶。<br>注意：完全图的连通度为总顶点数－</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">；<br>牵一发而动全身的点称为割点<br>边连通度：<br>连通图G的一个边子集E，如果删除边子集的边后，图便不再连通，则称E是G的桥集。<br>含有最小边数的桥集的边数</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">E</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">称为G的边连通度。</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">E</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">＝1时，E中的边叫做桥。<br>注意：规定不连通图的边连通度为0；完全图的边连通度为总顶点数－</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">；<br>连通图的两个特征：<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;连通度</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">边连通度</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">顶点数<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;顶点数大于2的2连通图的充分必要条件是任两个顶点在一个圈上.(没搞明白)<br>块的概念：<br>没有割点的连通子图，这个子图中的任何一对顶点之间至少存在两条不相交的路径，或者说要使两个站点同时发生故障<br>至少两个站点同时发生故障，这种二连通分支称为块．<br>显然各个块之间的关系有如下两种：<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">　互不连接<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">　通过割顶连接(割顶可以属于不同的块，也可以两个块公有一个割顶)<br>引申：无向图寻找块，关键是找割顶．<br>满足是割顶的条件：<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">　如果u不是根，u成为割顶的充要条件：当且仅当存在u的一个儿子顶点s,从s或者s的后代点到u的祖先点之间不存在后向边．<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">　如果u是根，则u成为割顶当且仅当它不止有一个儿子点．<br>怎样求割顶：<br>引入一个标号函数：<br>low(u)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">min{dfn(u),low(s),dfn(w)};&nbsp;s是u的一个儿子，(u,w)是后向边<br>显然low(u)值是u或者u的后代所能追溯到的最早(序号小)的祖先序号．<br>利用标号函数low，分析求割顶的步骤：<br>顶点u不为根且为割顶的条件是当且仅当u有一个儿子s，使得low(s)</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">dfn(u),即s和s的后代不会追溯到比<br>u更早的祖先点．<br>low(u)的计算步骤：<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;low(u)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">dfn(u);<br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">u在dfs过程中首次被访问</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;low(u)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">min{low(u),dfn(w)}<br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">检查后向边(u,w)时</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;low(u)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">min{low(u),low(s)}<br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">u的儿子s的关联边被检查时</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">注意：对任何顶点u计算low(u)的值是不断修改的，只有当以U为根的dfs子树和后代的low值,dfn值全部出现以后才停止.&nbsp;&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<img src ="http://www.cppblog.com/zzfmars/aggbug/121900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">ZMars</a> 2010-08-01 21:24 <a href="http://www.cppblog.com/zzfmars/archive/2010/08/01/121900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>