- Timestamp:
- Dec 15, 2010, 4:42:17 PM (14 years ago)
- Location:
- liacs/TPFL2010/assignment3
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
liacs/TPFL2010/assignment3/cyk.py
r252 r253 3 3 # Very nasty hacks to make python algoritm look similar to pg.142 CYK algoritm. 4 4 # 5 from pprint import pprint 5 6 6 7 … … 22 23 n = len(w) 23 24 r = [[[]]*(n+1) for x in irange(0,n)] 25 cyk = dict(); 24 26 25 27 28 for k in cnf.keys(): 29 for i in irange(1,n): 30 for j in irange(1,n): 31 cyk[(k,i,j)] = [] 26 32 27 33 28 def printr(): 34 def print_r(): 35 print ''' 36 \\begin{table}[htbp] 37 \\center 38 \\begin{tabular}{|c||%s} 39 \\hline 40 ''' % ('c|'*n) 29 41 print 'i\\textbackslash j &', 30 42 for i in irange(1,n): 31 print "%-10s &" % i, 43 print "%-10s" % i, 44 if i != n: 45 print "&", 32 46 print "\\\\ \\hline \\hline" 33 47 … … 37 51 for j in irange(1,n): 38 52 if r[i][j] == [None]: 39 item = "@" 40 else: 41 item = ",".join(r[i][j]), 42 print "%-10s &" % item, 53 item = "$\\emptyset$", 54 else: 55 item = '' 56 for k in r[i][j]: 57 c = from_cyk(k,i,j) 58 if c: 59 item += "%s: %s \\\\" % (k, c) 60 else: 61 item += "%s \\\\" % k 62 63 print "\\begin{tabular}{l}", 64 print "%-10s \\end{tabular}" % item, 65 if j != n: 66 print "&", 43 67 print "\\\\ \\hline" 68 print ''' 69 \\end{tabular} 70 \\label{tb:cyk} 71 \\caption{$CYK(L(G),babbbab)$. Algoritme in \cite{JS2009}[pg.~142]} 72 \\end{table} 73 ''' 74 44 75 45 76 def to_r(i,j,k): … … 52 83 def from_r(i,j): 53 84 return r[i][j] 85 86 def to_cyk(A,i,j,B): 87 cyk[(A,i,j)] += [B] 88 89 def from_cyk(A,i,j): 90 r = cyk[(A,i,j)] 91 if not r: 92 return None 93 else: 94 return ",".join([str(x) for x in r]) 95 54 96 55 97 def letter(i): … … 74 116 if x[0] in from_r(i,k) and x[1] in from_r(k+1,j): 75 117 to_r(i,j,y) 118 to_cyk(y,i,j,(x[0],x[1],k)) 76 119 77 120 78 printr() 121 print_r() 122 #pprint(cyk) -
liacs/TPFL2010/assignment3/report.tex
r242 r253 36 36 \newcommand{\qed}{\hfill \ensuremath{\Box}} 37 37 \newcommand{\all}{\Sigma^*} 38 \newcommand{\sep}{~|~} 38 39 \maketitle 39 40 \begin{abstract} 40 41 Dit schrijven zal uitwerkingen van opgaven behandelen uit het boek 41 42 \cite{JS2009} gebruikt bij het college. In deze opdracht zullen vijf opgaven 42 (1, 5, 6, 8, 14) van hoofdstuk 5 behandeld worden. De opgaven zijn 43 willekeurig gekozen met behulp van een kans generator, het kan dus zijn dat 44 niet alle onderwerpen van hoofdstuk 4 behandeld worden. 43 (1, 5, 6, 8, 14) van hoofdstuk 5 behandeld worden. 45 44 \end{abstract} 46 45 47 46 \section{Opgave 5.1} 47 De gramatica $G$ bestaat uit de volgende producties: 48 \begin{equation} 49 \begin{array}{l} 50 S \rightarrow AB \sep b \\ 51 A \rightarrow BC \sep a \\ 52 B \rightarrow AS \sep CB \sep b \\ 53 C \rightarrow SS \sep a \\ 54 \end{array} 55 \end{equation} 48 56 57 Gebruikmakend van het CYK algoritme gaan we aantonen dat $x = babbbab \in L(G)$ 58 zit. De ondersteunende tabel is van de grootte $6\times6$ omdat dit de lengte 59 van het woord $x$ is. In tabel~\ref{tb:cyk} staat cel $i,j$ voor welke 60 transities er gevolgt moet worden om het subwoord $x[i..j]$ te vormen. 61 62 63 \begin{table}[htbp] 64 \center 65 \begin{tabular}{|c||c|c|c|c|c|} 66 \hline 67 68 i\textbackslash j & 1 & 2 & 3 & 4 & 5 \\ \hline \hline 69 1 & \begin{tabular}{l} C \\ \end{tabular} & \begin{tabular}{l} $\emptyset$ \end{tabular} & \begin{tabular}{l} A: ('C', 'B', 1) \\ \end{tabular} & \begin{tabular}{l} A: ('A', 'A', 3) \\ \end{tabular} & \begin{tabular}{l} S: ('A', 'B', 3),('A', 'B', 4) \\B: ('A', 'S', 3),('A', 'S', 4) \\ \end{tabular} \\ \hline 70 2 & \begin{tabular}{l} \end{tabular} & \begin{tabular}{l} A \\ \end{tabular} & \begin{tabular}{l} S: ('A', 'B', 2) \\B: ('A', 'S', 2) \\ \end{tabular} & \begin{tabular}{l} $\emptyset$ \end{tabular} & \begin{tabular}{l} C: ('B', 'S', 3) \\ \end{tabular} \\ \hline 71 3 & \begin{tabular}{l} \end{tabular} & \begin{tabular}{l} \end{tabular} & \begin{tabular}{l} S \\B \\ \end{tabular} & \begin{tabular}{l} $\emptyset$ \end{tabular} & \begin{tabular}{l} C: ('B', 'S', 3) \\ \end{tabular} \\ \hline 72 4 & \begin{tabular}{l} \end{tabular} & \begin{tabular}{l} \end{tabular} & \begin{tabular}{l} \end{tabular} & \begin{tabular}{l} A \\ \end{tabular} & \begin{tabular}{l} S: ('A', 'B', 4) \\B: ('A', 'S', 4) \\ \end{tabular} \\ \hline 73 5 & \begin{tabular}{l} \end{tabular} & \begin{tabular}{l} \end{tabular} & \begin{tabular}{l} \end{tabular} & \begin{tabular}{l} \end{tabular} & \begin{tabular}{l} S \\B \\ \end{tabular} \\ \hline 74 75 \end{tabular} 76 \label{tb:cyk} 77 \caption{$CYK(L(G),babbbab)$. Algoritme in \cite{JS2009}[pg.~142]} 78 \end{table} 49 79 50 80 \section{Opgave 5.5}
Note:
See TracChangeset
for help on using the changeset viewer.