⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 算法.htm

📁 缔结特拉斯算法的c++实现
💻 HTM
📖 第 1 页 / 共 5 页
字号:
									<legend><a style="font-weight:bold; color:#FF0000" href="misc.php?action=viewratings&amp;tid=56497&amp;pid=307955" title="查看评分记录">本帖最近评分记录</a></legend>
									<ul>
									<div id="post_rate_307955"></div>										<li>
											<cite><a style="color:#800000" href="space.php?uid=63517" target="_blank">花如月</a></cite>
											<font color="#8000FF">威望</font>
											<strong><font color="#FF0000">+1</font></strong>
											<font color="#008000">2008-1-1 14:50</font>
											<em>理由:<font color="#0000FF">经验分享</font></em>
										</li>
									</ul>
								</fieldset>
																</div>
									<div class="signatures" style="maxHeightIE: 60px;">
						欢迎访问我的blog:<br />
7752577.blog.sohu.com<br />
有很多好程序哦					</div>
							</td>
		</tr>
		<tr>
			<td class="postauthor">
								<div class="popupmenu_popup userinfopanel" id="userinfo307955_menu" style="display: none;">
										<dl><dt>UID</dt><dd>17385&nbsp;</dd><dt>帖子</dt><dd>133&nbsp;</dd><dt>精华</dt><dd><a href="digest.php?authorid=17385">1</a>&nbsp;</dd><dt>积分</dt><dd>32&nbsp;</dd><dt>体能</dt><dd>10 点&nbsp;</dd><dt>威望</dt><dd>17 点&nbsp;</dd><dt>管理积分</dt><dd>0 点&nbsp;</dd><dt>阅读权限</dt><dd>40&nbsp;</dd><dt>在线时间</dt><dd>36 小时&nbsp;</dd><dt>注册时间</dt><dd>2006-4-1&nbsp;</dd><dt>最后登录</dt><dd>2008-1-19&nbsp;</dd></dl>
										<p><a href="space-uid-17385.html" target="_blank">查看详细资料</a></p>
														</div>
							</td>
			<td class="postcontent">
				<div class="postactions">
										<p>
																																																												<strong onclick="scroll(0,0)" title="顶部">TOP</strong>
					</p>
										<div id="ad_thread1_1"></div>				</div>
			</td>
		</tr>
		</table>
				</div>
	<div class="mainbox viewthread">
			<table id="pid308252" summary="pid308252" cellspacing="0" cellpadding="0">
			<tr>
				<td class="postauthor">
					 					<cite>											<a href="space-uid-17385.html" target="_blank" id="userinfo308252" class="dropmenu" onmouseover="showMenu(this.id)">assist</a></cite>
																			<div class="avatar"><img src="http://www.chinavib.com/ucenter/data/avatar/000/01/73/85_avatar_middle.jpg" onerror="this.onerror=null;this.src='http://www.chinavib.com/ucenter/images/noavatar_middle.gif'"></div>												<p><em><font color="#4444BB">风流才子</font></em></p>
						<p><img src="images/wld61/star_level2.gif" alt="Rank: 6" /><img src="images/wld61/star_level1.gif" alt="Rank: 6" /><img src="images/wld61/star_level1.gif" alt="Rank: 6" /></p>
																		
						<ul>
													<li class="space"><a href="http://www.chinavib.com/UChome/space.php?uid=17385" target="_blank">个人空间</a></li>
												<li class="pm"><a href="###" onclick="pmwin('open', 'uid=17385')">发短消息</a></li>
						<li class="buddy"><a href="my.php?item=buddylist&amp;newbuddyid=17385&amp;buddysubmit=yes" target="_blank" id="ajax_buddy_2" onclick="ajaxmenu(event, this.id, 3000, 0)">加为好友</a></li>

																					<li class="offline">当前离线
														</li>
						
						</ul>
									</td>
				<td class="postcontent" >
					<div class="postinfo">
						<strong title="复制帖子链接到剪贴板" id="postnum308252" onclick="setcopy('http://www.chinavib.com/forum/viewthread.php?tid=56497&amp;page=1#pid308252', '帖子链接已经复制到剪贴板')">板凳</strong>
													<em onclick="$('postmessage_308252').className='t_bigfont'">大</em>							<em onclick="$('postmessage_308252').className='t_msgfont'">中</em>
							<em onclick="$('postmessage_308252').className='t_smallfont'">小</em>												发表于 2008-1-2 18:23&nbsp;																					<a href="viewthread.php?tid=56497&amp;page=1&amp;authorid=17385" rel="nofollow">只看该作者</a>
																		</div>
					<div id="ad_thread2_2"></div>					<div class="postmessage defaultpost">
																		            						<div id="ad_thread3_2"></div><div id="ad_thread4_2"></div>
													<h2>【转】Dijkstra算法说明</h2>
						
						
																											<div id="postmessage_308252" class="t_msgfont"><span font-size: 14px; id="236">Dijkstra算法是由荷兰计算机科学家艾兹格·迪科斯彻发现的。算法解决的是有向图中最短路径问题。<br />
<br />
举例来说,如果图中的顶点表示城市,而边上的权重表示著城市间开车行经的距离。 Dijkstra算法可以用来找到两个城市之间的最短路径。<br />
<br />
Dijkstra算法的输入包含了一个有权重的有向图G,以及G中的一个来源顶点S。 我们以V表示G中所有顶点的集合。 每一个图中的边,都是两个顶点所形成的有序元素对。(u,v)表示从顶点u到v有路径相连。 我们以E所有边的集合,而边的权重则由权重函数w: E → [0, ∞]定义。 因此,w(u,v)就是从顶点u到顶点v的非负花费值(cost)。 边的花费可以想像成两个顶点之间的距离。任两点间路径的花费值,就是该路径上所有边的花费值总和。 已知有V中有顶点s及t,Dijkstra算法可以找到s到t的最低花费路径(i.e. 最短路径)。 这个算法也可以在一个图中,找到从一个顶点s到任何其他顶点的最短路径。<br />
<br />
算法描述<br />
这个算法是通过为每个顶点v保留目前为止所找到的从s到v的最短路径来工作的。初始时,源点s的路径长度值被赋为0(d[s]=0), 同时把所有其他顶点的路径长度设为无穷大,即表示我们不知道任何通向这些顶点的路径(对于V中所有顶点v除s外d[v]= ∞)。当算法结束时,d[v]中储存的便是从s到v的最短路径,或者如果路径不存在的话是无穷大。 Dijstra算法的基础操作是边的拓展:如果存在一条从u到v的边,那么从s到u的最短路径可以通过将边(u,v)添加到尾部来拓展一条从s到v的路径。这条路径的长度是d+w(u,v)。如果这个值比目前已知的d[v]的值要小,我们可以用新值来替代当前d[v]中的值。拓展边的操作一直执行到所有的d[v]都代表从s到v最短路径的花费。这个算法经过组织因而当d达到它最终的值的时候没条边(u,v)都只被拓展一次。<br />
算法维护两个顶点集S和Q。集合S保留了我们已知的所有d[v]的值已经是最短路径的值顶点,而集合Q则保留其他所有顶点。集合S初始状态为空,而后每一步都有一个顶点从Q移动到S。这个被选择的顶点是Q中拥有最小的d值的顶点。当一个顶点u从Q中转移到了S中,算法对每条外接边(u,v)进行拓展。 <br />
在下面的算法中,u:=Extract_Min(Q)在在顶点集Q中搜索有最小的d值的顶点u。这个顶点被从集合Q中删除并返回给用户。<br />
1&nbsp;&nbsp;function Dijkstra(G, w, s)<br />
2&nbsp; &nbsp;&nbsp;&nbsp;for each vertex v in V[G]&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// 初始化<br />
3&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;d[v] := infinity<br />
4&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;previous[v] := undefined<br />
5&nbsp; &nbsp;&nbsp;&nbsp;d[s] := 0<br />
6&nbsp; &nbsp;&nbsp;&nbsp;S := empty set<br />
7&nbsp; &nbsp;&nbsp;&nbsp;Q := set of all vertices<br />
8&nbsp; &nbsp;&nbsp;&nbsp;while Q is not an empty set&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // Dijstra算法主体<br />
9&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;u := Extract_Min(Q)<br />
10&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;S := S union {u}<br />
11&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;for each edge (u,v) outgoing from u<br />
12&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if d[v] &gt; d + w(u,v)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 拓展边(u,v)<br />
13&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;d[v] := d + w(u,v)<br />
14&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;previous[v] := u<br />
如果我们只对在s和t之间寻找一条最短路径的话,我们可以在第9行添加条件如果满足u=t的话终止程序。<br />
现在我们可以通过迭代来回溯出s到t的最短路径<br />
1 S := empty sequence <br />
2 u := t<br />
3 while defined u&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <br />
4&nbsp; &nbsp;&nbsp; &nbsp; insert u to the beginning of S<br />
5&nbsp; &nbsp;&nbsp; &nbsp; u := previous<br />
现在序列S就是从s到t的最短路径的顶点集.<br /><br />[<i> 本帖最后由 assist 于 2008-1-2 18:24 编辑 </i>]</span></div>

							
							
							
							
															<div id="post_rate_div_308252"></div>
																</div>
									<div class="signatures" style="maxHeightIE: 60px;">
						欢迎访问我的blog:<br />
7752577.blog.sohu.com<br />
有很多好程序哦					</div>
							</td>
		</tr>
		<tr>
			<td class="postauthor">
								<div class="popupmenu_popup userinfopanel" id="userinfo308252_menu" style="display: none;">
										<dl><dt>UID</dt><dd>17385&nbsp;</dd><dt>帖子</dt><dd>133&nbsp;</dd><dt>精华</dt><dd><a href="digest.php?authorid=17385">1</a>&nbsp;</dd><dt>积分</dt><dd>32&nbsp;</dd><dt>体能</dt><dd>10 点&nbsp;</dd><dt>威望</dt><dd>17 点&nbsp;</dd><dt>管理积分</dt><dd>0 点&nbsp;</dd><dt>阅读权限</dt><dd>40&nbsp;</dd><dt>在线时间</dt><dd>36 小时&nbsp;</dd><dt>注册时间</dt><dd>2006-4-1&nbsp;</dd><dt>最后登录</dt><dd>2008-1-19&nbsp;</dd></dl>
										<p><a href="space-uid-17385.html" target="_blank">查看详细资料</a></p>
														</div>
							</td>
			<td class="postcontent">
				<div class="postactions">
										<p>
																																																												<strong onclick="scroll(0,0)" title="顶部">TOP</strong>
					</p>
										<div id="ad_thread1_2"></div>				</div>
			</td>
		</tr>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -