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

📄 9.4.1_2.htm

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 HTM
字号:
<html>

<head>
<title>编译原理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link type="text/css" rel="stylesheet" href="../css/specification.css">
</head>

<BODY>

<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.4.1.htm'" ></td>
<td>
<img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.4.2.htm'" ></img></td>
</tr>
</table>
<br><br>

<font class="title2"><b>9.4.1 必经节点(续)</b></font>

<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
三、寻找必经结点的算法
<p><font class = "definition">算法9.1 寻找必经结点 </font></p>
<p>输入: 一个流图,其结点集合N,边集合E,初始结点n<sub>0</sub> </p>
<p>输出: 关系 dom </p>
<p>方法: 用下面的过程迭代计算n的必经结点集合D(n),最终,d在D(n)中当且仅当d dom n。
</p>
<p>&nbsp;(1)&nbsp;&nbsp;&nbsp;&nbsp;D(n<sub>0</sub>) :={n<sub>0</sub>}; </p>
<p>&nbsp;(2)&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">for</font> n in (N 一{n<sub>0</sub>})
<font color="#0000FF">do</font> D(n):=N; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">&nbsp;&nbsp;/*初始化结束*/ </font> </p>
<p>&nbsp;(3)&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">while</font> 任何D(n)出现变化 
<font color="#0000FF">do</font> </p>
<p>&nbsp;(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">for</font> n in (N一{n<sub>0</sub>})
<font color="#0000FF">do</font> </p>
<p>&nbsp;(5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D(n):={n}∪ ∩ D(p);<br>
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size="2">p是n的前驱</font> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>图9.17    &nbsp;&nbsp;求控制必经结点集D(n)的算法</b></p> 
<p><font class = "example">例9.7</font> 使用算法9.1求图9.16(见本页上部)的流图的控制必经结点集D(n),并假定第(4)行的for循环按结点的数值次序访问。结点2只有结点1作为前驱,所以D(2):={2}U 
D(1)。因为1是初始结点,D(1)在第(1)行置为{1},所以D(2)在第(5)行是集合{1,2}。 </p>
<p>然后考虑结点3,它的前驱有1,2,4和8。第(5)行给出D(3)={3}U({1}∩{1,2}∩{1,2,…,10})={1,3}。剩余的计算是 
</p>
<p>&nbsp;&nbsp;&nbsp; D(4)={4}U(D(3)∩D(7))={4}U({1,3}∩{1,2,…,10})<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;={1,3,4} </p>
<p>&nbsp;&nbsp;&nbsp; D(5)={5}UD(4)={5}U{1,3,4}={1,3,4,5} </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;D(6)={6}UD(4)={6}U{1,3,4}={1,3,4,6} </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;D(7)={7}U(D(5)∩D(6)∩D(10))<br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;={7}U({1,3,4,5}∩{1,3,4,6}∩{1,2,…,10})<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;={1,3,4,7} </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;D(8)={8}UD(7)={8}U{1,3,4,7}={1,3,4,7,8} </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;D(9)={9}UD(8)={9}U{l,3,4,7,8}={1,3,4,7,8,9} </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;D(10)={10}UD(8)={10}U{1,3,4,7,8}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;={1,3,4,7,8,10} </p>
<p>通过while循环的第二遍扫描没有产生改变,所以上面的值就是关系dom。 </td>
</p>
</td>
</tr>
</table>


<br>
<table align=right width=300>
<tr>
<td>
<img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.4.1.htm'" ></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.4.2.htm'" ></td>
</tr>
</table>

</BODY>

⌨️ 快捷键说明

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