diff options
| author | Juan Marín Noguera <juan@mnpi.eu> | 2025-05-16 22:18:44 +0200 |
|---|---|---|
| committer | Juan Marín Noguera <juan@mnpi.eu> | 2025-05-16 22:18:44 +0200 |
| commit | 4f670b750af5c11e1eac16d9cd8556455f89f46a (patch) | |
| tree | e0f8d7b33df2727d89150f799ee8628821fda80a /2.3.3.lyx | |
| parent | 16ccda6c459c0fd7ca2081e9d541124c28b0c556 (diff) | |
Changed layout for more manageable volumes
Diffstat (limited to '2.3.3.lyx')
| -rw-r--r-- | 2.3.3.lyx | 2031 |
1 files changed, 0 insertions, 2031 deletions
diff --git a/2.3.3.lyx b/2.3.3.lyx deleted file mode 100644 index 56bc0e1..0000000 --- a/2.3.3.lyx +++ /dev/null @@ -1,2031 +0,0 @@ -#LyX 2.4 created this file. For more info see https://www.lyx.org/ -\lyxformat 620 -\begin_document -\begin_header -\save_transient_properties true -\origin unavailable -\textclass book -\begin_preamble -\input defs -\usepackage{calc} -\end_preamble -\use_default_options true -\maintain_unincluded_children no -\language english -\language_package default -\inputencoding utf8 -\fontencoding auto -\font_roman "default" "default" -\font_sans "default" "default" -\font_typewriter "default" "default" -\font_math "auto" "auto" -\font_default_family default -\use_non_tex_fonts false -\font_sc false -\font_roman_osf false -\font_sans_osf false -\font_typewriter_osf false -\font_sf_scale 100 100 -\font_tt_scale 100 100 -\use_microtype false -\use_dash_ligatures true -\graphics default -\default_output_format default -\output_sync 0 -\bibtex_command default -\index_command default -\float_placement class -\float_alignment class -\paperfontsize default -\spacing single -\use_hyperref false -\papersize default -\use_geometry false -\use_package amsmath 1 -\use_package amssymb 1 -\use_package cancel 1 -\use_package esint 1 -\use_package mathdots 1 -\use_package mathtools 1 -\use_package mhchem 1 -\use_package stackrel 1 -\use_package stmaryrd 1 -\use_package undertilde 1 -\cite_engine basic -\cite_engine_type default -\biblio_style plain -\use_bibtopic false -\use_indices false -\paperorientation portrait -\suppress_date false -\justification true -\use_refstyle 1 -\use_formatted_ref 0 -\use_minted 0 -\use_lineno 0 -\index Index -\shortcut idx -\color #008000 -\end_index -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\paragraph_indentation default -\is_math_indent 0 -\math_numbering_side default -\quotes_style english -\dynamic_quotes 0 -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tablestyle default -\tracking_changes false -\output_changes false -\change_bars false -\postpone_fragile_content false -\html_math_output 0 -\html_css_as_file 0 -\html_be_strict false -\docbook_table_output 0 -\docbook_mathml_prefix 1 -\end_header - -\begin_body - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc1[20] -\end_layout - -\end_inset - -If we had only -\family typewriter -LTAG -\family default -, - -\family typewriter -INFO -\family default - and -\family typewriter -RTAG -\family default - fields (not -\family typewriter -LLINK -\family default -) in a level order sequential representation like (8), - would it be possible to reconstruct the -\family typewriter -LLINK -\family default -s? - (In other words, - are the -\family typewriter -LLINK -\family default -s redundant in (8), - as the -\family typewriter -RLINK -\family default -s are in (3)?) -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -Yes, - although the traversal might be less efficient. - First, - we would have to collect the roots of the trees to form the first level. - These roots are precisely the first family, - that is, - the first sequence of nodes up to an including one with -\begin_inset Formula $\mathtt{RTAG}=1$ -\end_inset - -. - We count the number of such nodes that have children, - which are the ones with -\begin_inset Formula $\mathtt{LTAG}=0$ -\end_inset - -. - For the second level, - we take as many families as nodes with children in the first level. - Each of those families corresponds to the children of one of those nodes, - in order. - For the third level, - we take as many families as nodes with children in the second level, - and so on. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc3[24] -\end_layout - -\end_inset - -Modify Algorithm 2.3.2D so that it follows the ideas of Algorithm F, - placing the derivatives it computes as intermediate results on a stack, - instead of recording their locations in an anomalous fashion as is done in step D3. - (See exercise 2.3.2–21.) The stack may be maintained by using the -\family typewriter -RLINK -\family default - field in the root of each derivative. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Enumerate -[Initalize.] Set -\begin_inset Formula $\mathtt{P}\gets\mathtt{Y}\$$ -\end_inset - -. -\end_layout - -\begin_layout Enumerate -\begin_inset CommandInset label -LatexCommand label -name "enu:e23324b" - -\end_inset - -[Differentiate.] Set -\begin_inset Formula $d\gets\mathtt{DEGREE(P)}$ -\end_inset - -. - If -\begin_inset Formula $d=0$ -\end_inset - -, - set -\begin_inset Formula $\mathtt{ARGS}\gets0$ -\end_inset - -, - otherwise set -\begin_inset Formula $t\gets\mathtt{RLINK}^{d-1}\mathtt{(LLINK(DY))}$ -\end_inset - -, - -\begin_inset Formula $\mathtt{DY}\gets\mathtt{RLINK(}t\mathtt{)}$ -\end_inset - -, - and -\begin_inset Formula $\mathtt{RLINK(}t\mathtt{)}\gets\Lambda$ -\end_inset - -. - Then perform the routine -\begin_inset Formula $\mathtt{DIFF[TYPE(P)]}$ -\end_inset - -. - (This routine uses -\family typewriter -P -\family default - and -\family typewriter -ARGS -\family default - as its arguments and it is in change of freeing the nodes of -\family typewriter -ARGS -\family default - that will not be part of the result, - which it should store in -\family typewriter -Q -\family default -.) -\end_layout - -\begin_layout Enumerate -[Save link.] Set -\begin_inset Formula $\mathtt{RLINK(Q)}\gets\mathtt{LLINK(DY)}$ -\end_inset - -, - -\begin_inset Formula $\mathtt{LLINK(DY)}\gets\mathtt{Q}$ -\end_inset - -, - and -\begin_inset Formula $\mathtt{P}\gets\mathtt{P}\$$ -\end_inset - -. -\end_layout - -\begin_layout Enumerate -[Done?] If -\begin_inset Formula $\mathtt{P}=\mathtt{Y}$ -\end_inset - -, - terminate. - Otherwise go back to step -\begin_inset CommandInset ref -LatexCommand ref -reference "enu:e23324b" -plural "false" -caps "false" -noprefix "false" -nolink "false" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc6[24] -\end_layout - -\end_inset - -Suppose that the nodes of an -\emph on -oriented -\emph default - forest have three link fields, - -\family typewriter -PARENT -\family default -, - -\family typewriter -LCHILD -\family default -, - and -\family typewriter -RLINK -\family default -, - but only the -\family typewriter -PARENT -\family default - link has been set up to indicate the tree structure. - The -\family typewriter -LCHILD -\family default - field of each node is -\begin_inset Formula $\Lambda$ -\end_inset - - and the -\family typewriter -RLINK -\family default - fields are set as a linear list that simply links the nodes together in some order. - The link variable -\family typewriter -FIRST -\family default - points to the first node, - and the last node has -\begin_inset Formula $\mathtt{RLINK}=\Lambda$ -\end_inset - -. - Design an algorithm that goes through these nodes and fills in the -\family typewriter -LCHILD -\family default - and -\family typewriter -RLINK -\family default - fields compatible with the -\family typewriter -PARENT -\family default - links, - so that a triply linked tree representation like that in Fig. - 26 is obtained. - Also, - reset -\family typewriter -FIRST -\family default - so that it now points to the root of the first tree in the representation. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Enumerate -[Initialize.] Set -\begin_inset Formula $\mathtt{C}\gets\mathtt{FIRST}$ -\end_inset - - and -\begin_inset Formula $\mathtt{FIRST}\gets\Lambda$ -\end_inset - - (we haven't found any root yet). -\end_layout - -\begin_layout Enumerate -[Done?] If -\begin_inset Formula $\mathtt{C}=\Lambda$ -\end_inset - -, - terminate. -\end_layout - -\begin_layout Enumerate -[Add child.] Set -\begin_inset Formula $p\gets\mathtt{PARENT(C)}$ -\end_inset - - and -\begin_inset Formula $\mathtt{N}\gets\mathtt{RLINK(C)}$ -\end_inset - -. - If -\begin_inset Formula $p=\Lambda$ -\end_inset - -, - set -\begin_inset Formula $\mathtt{RLINK(C)}\gets\mathtt{FIRST}$ -\end_inset - - and -\begin_inset Formula $\mathtt{FIRST}\gets\mathtt{C}$ -\end_inset - -, - otherwise set -\begin_inset Formula $\mathtt{RLINK(C)}\gets\mathtt{FCHILD(}p\mathtt{)}$ -\end_inset - - and -\begin_inset Formula $\mathtt{FCHILD(}p\mathtt{)}\gets\mathtt{C}$ -\end_inset - -. - (In assembly we might just set -\begin_inset Formula $p$ -\end_inset - - to some function of -\family typewriter -LOC(FIRST) -\family default - whenever -\begin_inset Formula $p=\Lambda$ -\end_inset - -.) -\end_layout - -\begin_layout Enumerate -[Advance.] Set -\begin_inset Formula $\mathtt{C}\gets\mathtt{N}$ -\end_inset - - and go to the previous step. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc11[24] -\end_layout - -\end_inset - -( -\emph on -Equivalence declarations. -\emph default -) Several compiler languages, - notably FORTRAN, - provide a facility for overlapping the memory locations assigned to sequentially stored tables. - The programmer gives the compiler a set of relations of the form -\begin_inset Formula $\mathtt{X[}j\mathtt{]}\equiv\mathtt{Y[}k\mathtt{]}$ -\end_inset - -, - which means that variable -\begin_inset Formula $\mathtt{X[}j+s\mathtt{]}$ -\end_inset - - is to be assigned to the same location as variable -\begin_inset Formula $\mathtt{Y[}k+s\mathtt{]}$ -\end_inset - - for all -\begin_inset Formula $s$ -\end_inset - -. - Each variable is also given a range of allowable subscripts: - -\begin_inset Quotes eld -\end_inset - - -\family typewriter -ARRAY X[ -\begin_inset Formula $l:u$ -\end_inset - -] -\family default - -\begin_inset Quotes erd -\end_inset - - means that space is to be set aside in memory for the table entries -\family typewriter -X[ -\begin_inset Formula $l$ -\end_inset - -] -\family default -, - -\family typewriter -X[ -\begin_inset Formula $l+1$ -\end_inset - -] -\family default -, - ..., - -\family typewriter -X[ -\begin_inset Formula $u$ -\end_inset - -] -\family default -. - For each equivalence class of variables, - the compiler reserves as small a block of consecutive memory locations as possible, - to contain all the table entries for the allowable subscript values of these variables. -\end_layout - -\begin_layout Standard -For example, - suppose we have -\family typewriter -ARRAY X[ -\begin_inset Formula $0:10$ -\end_inset - -] -\family default -, - -\family typewriter -ARRAY Y[ -\begin_inset Formula $3:10$ -\end_inset - -] -\family default -, - -\family typewriter -ARRAY A[ -\begin_inset Formula $1:1$ -\end_inset - -] -\family default -, - and -\family typewriter -ARRAY Z[ -\begin_inset Formula $-2:0$ -\end_inset - -] -\family default -, - plus the equivalences -\begin_inset Formula $\mathtt{X[}7\mathtt{]}\equiv\mathtt{Y[}3\mathtt{]}$ -\end_inset - -, - -\begin_inset Formula $\mathtt{Z[}0\mathtt{]}\equiv\mathtt{A[}0\mathtt{]}$ -\end_inset - -, - and -\begin_inset Formula $\mathtt{Y[}1\mathtt{]}\equiv\mathtt{A[}8\mathtt{]}$ -\end_inset - -. - We must set aside 20 consecutive locations -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -begin{center} -\end_layout - -\begin_layout Plain Layout - - -\backslash -begin{tikzpicture}[scale=0.55,circle dotted/.style={ -\end_layout - -\begin_layout Plain Layout - - dash pattern=on 0 off .55cm, - line cap=round}] -\end_layout - -\begin_layout Plain Layout - - -\backslash -small -\backslash -def -\backslash -sep{0.15} -\end_layout - -\begin_layout Plain Layout - - -\backslash -def -\backslash -ab#1#2{++(1cm, -\backslash -sep) node[above]{$ -\backslash -mathtt{#2}_{#1}$} ++(0,- -\backslash -sep)} -\end_layout - -\begin_layout Plain Layout - - -\backslash -def -\backslash -be#1#2{++(1cm,- -\backslash -sep) node[below]{$ -\backslash -mathtt{#2}_{#1}$} ++(0, -\backslash -sep)} -\end_layout - -\begin_layout Plain Layout - - -\backslash -def -\backslash -abe#1#2#3#4{++(1cm, -\backslash -sep) node[above]{$ -\backslash -mathtt{#2}_{#1}$} -\end_layout - -\begin_layout Plain Layout - - ++(0,-2* -\backslash -sep) node[below]{$ -\backslash -mathtt{#4}_{#3}$} ++(0, -\backslash -sep)} -\end_layout - -\begin_layout Plain Layout - - -\backslash -draw[line width = 3,circle dotted] (0,0) -- (19cm,0); -\end_layout - -\begin_layout Plain Layout - - -\backslash -draw (-1,0) -\backslash -be{-2}Z -\backslash -be{-1}Z -\backslash -be0Z -\backslash -be1A ++(1cm,0) -\end_layout - -\begin_layout Plain Layout - - -\backslash -ab0X -\backslash -ab1X -\backslash -ab2X -\backslash -ab3X -\backslash -ab4X -\end_layout - -\begin_layout Plain Layout - - -\backslash -ab5X -\backslash -ab6X -\backslash -abe7X3Y -\backslash -abe8X4Y -\backslash -abe9X5Y -\end_layout - -\begin_layout Plain Layout - - -\backslash -abe{10}X6Y -\backslash -be7Y -\backslash -be8Y -\backslash -be9Y -\backslash -be{10}Y; -\end_layout - -\begin_layout Plain Layout - - -\backslash -end{tikzpicture} -\end_layout - -\begin_layout Plain Layout - - -\backslash -end{center} -\end_layout - -\end_inset - -for these variables. - (The location following -\begin_inset Formula $\mathtt{A[}1\mathtt{]}$ -\end_inset - - is not an allowable subscript value for any of the arrays, - but it must be reserved anyway.) -\end_layout - -\begin_layout Standard -The object of this exercise is to modify Algorithm E so that it applies to the more general situation just described. - Assume that we are writing a compiler for such a language, - and the tables inside our compiler program itself have one node for each array, - containing the fields -\family typewriter -NAME -\family default -, - -\family typewriter -PARENT -\family default -, - -\family typewriter -DELTA -\family default -, - -\family typewriter -LBD -\family default -, - and -\family typewriter -UBD -\family default -. - Assume that the compiler program has previously processed all the -\family typewriter -ARRAY -\family default - declarations, - so that if -\family typewriter -ARRAY X[ -\begin_inset Formula $l:u$ -\end_inset - -] -\family default - has appeared and if -\family typewriter -P -\family default - points to the node for -\family typewriter -X -\family default -, - then -\begin_inset Formula -\begin{align*} -\mathtt{NAME(P)} & =\text{``\texttt{X}''}, & \mathtt{PARENT(P)} & =\Lambda, & \mathtt{DELTA(P)} & =0,\\ -\mathtt{LBD(P)} & =l, & \mathtt{UBD(P)} & =u. -\end{align*} - -\end_inset - -The problem is to design an algorithm that processes the equivalence declarations, - so that, - after this algorithm has been performed, -\end_layout - -\begin_layout Quote -\begin_inset Formula $\mathtt{PARENT(P)}=\Lambda$ -\end_inset - - means that locations -\begin_inset Formula $\mathtt{X[LBD(P)]},...,\mathtt{X[UBD(P)]}$ -\end_inset - - are to be reserved in memory for this equivalence class; -\end_layout - -\begin_layout Quote -\begin_inset Formula $\mathtt{PARENT(P)}=\mathtt{Q}\neq\Lambda$ -\end_inset - - means that location -\begin_inset Formula $\mathtt{X[}k\mathtt{]}$ -\end_inset - - equals location -\begin_inset Formula $\mathtt{Y[}k+\mathtt{DELTA(P)]}$ -\end_inset - -, - where -\begin_inset Formula $\mathtt{NAME(Q)}=\text{``\texttt{Y}''}$ -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -begin{samepage} -\end_layout - -\end_inset - -For example, - before the equivalences listed above we might have the nodes -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -vspace{2pt} -\end_layout - -\end_inset - - -\begin_inset Newline newline -\end_inset - - -\begin_inset Tabular -<lyxtabular version="3" rows="5" columns="6"> -<features tabularvalignment="middle"> -<column alignment="center" valignment="top"> -<column alignment="center" valignment="top"> -<column alignment="center" valignment="top"> -<column alignment="center" valignment="top"> -<column alignment="center" valignment="top"> -<column alignment="center" valignment="top"> -<row> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -P -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -NAME(P) -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -PARENT(P) -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -DELTA(P) -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -LBD(P) -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -UBD(P) -\end_layout - -\end_inset -</cell> -</row> -<row> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\alpha$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -X -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\Lambda$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -0 -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -0 -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -10 -\end_layout - -\end_inset -</cell> -</row> -<row> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\beta$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -Y -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\Lambda$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -0 -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -3 -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -10 -\end_layout - -\end_inset -</cell> -</row> -<row> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\gamma$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -A -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\Lambda$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -0 -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -1 -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -1 -\end_layout - -\end_inset -</cell> -</row> -<row> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\delta$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -Z -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\Lambda$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -0 -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $-2$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -0 -\end_layout - -\end_inset -</cell> -</row> -</lyxtabular> - -\end_inset - - -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -vspace{4pt} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -noindent -\end_layout - -\end_inset - -After the equivalences are processed, - the nodes might appear thus: -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -vspace{2pt} -\end_layout - -\end_inset - - -\begin_inset Newline newline -\end_inset - - -\begin_inset Tabular -<lyxtabular version="3" rows="4" columns="6"> -<features tabularvalignment="middle"> -<column alignment="center" valignment="top"> -<column alignment="center" valignment="top"> -<column alignment="center" valignment="top"> -<column alignment="center" valignment="top"> -<column alignment="center" valignment="top"> -<column alignment="center" valignment="top"> -<row> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\text{\makebox[\widthof{\texttt{P}}][c]{\ensuremath{\alpha}}}$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\text{\makebox[\widthof{\texttt{NAME(P)}}][c]{\texttt{X}}}$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\text{\makebox[\widthof{\texttt{PARENT(P)}}][c]{\ensuremath{\Lambda}}}$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\text{\makebox[\widthof{\texttt{DELTA(P)}}][c]{\ensuremath{*}}}$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\text{\makebox[\widthof{\texttt{LBD(P)}}][c]{\ensuremath{-5}}}$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\text{\makebox[\widthof{\texttt{UBD(P)}}][c]{14}}$ -\end_inset - - -\end_layout - -\end_inset -</cell> -</row> -<row> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\beta$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -Y -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\alpha$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -4 -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $*$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $*$ -\end_inset - - -\end_layout - -\end_inset -</cell> -</row> -<row> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\gamma$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -A -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\delta$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -0 -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $*$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $*$ -\end_inset - - -\end_layout - -\end_inset -</cell> -</row> -<row> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\delta$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout - -\family typewriter -Z -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $\alpha$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $-3$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $*$ -\end_inset - - -\end_layout - -\end_inset -</cell> -<cell alignment="center" valignment="top" usebox="none"> -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Formula $*$ -\end_inset - - -\end_layout - -\end_inset -</cell> -</row> -</lyxtabular> - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -noindent -\end_layout - -\end_inset - -( -\begin_inset Quotes eld -\end_inset - - -\begin_inset Formula $*$ -\end_inset - - -\begin_inset Quotes erd -\end_inset - - denotes irrelevant information.) -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -end{samepage} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -Design an algorithm that makes this transformation. - Assume that inputs to your algorithm have the form -\begin_inset Formula $(\mathtt{P},j,\mathtt{Q},k)$ -\end_inset - -, - denoting -\begin_inset Formula $\mathtt{X[}j\mathtt{]}\equiv\mathtt{Y[}k\mathtt{]}$ -\end_inset - -, - where -\begin_inset Formula $\mathtt{NAME(P)}=\text{``X''}$ -\end_inset - - and -\begin_inset Formula $\mathtt{NAME(Q)}=\text{``Y''}$ -\end_inset - -. - Be sure to check whether the equivalences are contradictory; - for example, - -\begin_inset Formula $\mathtt{X[}1\mathtt{]}\equiv\mathtt{Y[}2\mathtt{]}$ -\end_inset - - contradicts -\begin_inset Formula $\mathtt{X[}2\mathtt{]}\equiv\mathtt{Y[}1\mathtt{]}$ -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Enumerate -\begin_inset CommandInset label -LatexCommand label -name "enu:e23311a" - -\end_inset - -[Read input.] Read a line -\begin_inset Formula $(\mathtt{P},j,\mathtt{Q},k)$ -\end_inset - -, - but if there are no more lines, - terminate the algorithm. -\end_layout - -\begin_layout Enumerate -[Find roots.] If -\begin_inset Formula $\mathtt{PARENT(P)}\neq\Lambda$ -\end_inset - -, - set -\begin_inset Formula $j\gets j+\mathtt{DELTA(P)}$ -\end_inset - -, - -\begin_inset Formula $\mathtt{P}\gets\mathtt{PARENT(P)}$ -\end_inset - -, - and repeat this step. - If -\begin_inset Formula $\mathtt{PARENT(Q)}\neq\Lambda$ -\end_inset - -, - set -\begin_inset Formula $k\gets k+\mathtt{DELTA(Q)}$ -\end_inset - -, - -\begin_inset Formula $\mathtt{Q}\gets\mathtt{PARENT(Q)}$ -\end_inset - -, - and repeat this step. -\end_layout - -\begin_layout Enumerate -[Merge trees.] If -\begin_inset Formula $\mathtt{P}\neq\mathtt{Q}$ -\end_inset - -, - set -\begin_inset Formula $\mathtt{PARENT(P)}\gets\mathtt{Q}$ -\end_inset - - -\begin_inset Formula $\mathtt{DELTA(P)}\gets k-j$ -\end_inset - -, - -\begin_inset Formula $\mathtt{LBD(Q)}\gets\min\{\mathtt{LBD(Q)},\mathtt{LBD(P)}+\mathtt{DELTA(P)}\}$ -\end_inset - -, - -\begin_inset Formula $\mathtt{UBD(Q)}\gets\max\{\mathtt{UBD(Q)},\mathtt{UBD(P)}+\mathtt{DELTA(P)}\}$ -\end_inset - -. - Otherwise, - if -\begin_inset Formula $j\neq k$ -\end_inset - -, - notify a contradiction and terminate the algorithm. - Finally go to step -\begin_inset CommandInset ref -LatexCommand ref -reference "enu:e23311a" -plural "false" -caps "false" -noprefix "false" -nolink "false" - -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc17[25] -\end_layout - -\end_inset - -Algorithm F evaluates a -\begin_inset Quotes eld -\end_inset - -bottom-up -\begin_inset Quotes erd -\end_inset - - locally defined function, - namely, - one that should be evaluated at the children of a node before it is evaluated at the node. - A -\begin_inset Quotes eld -\end_inset - -top-down -\begin_inset Quotes erd -\end_inset - - locally defined function -\begin_inset Formula $f$ -\end_inset - - is one in which the value of -\begin_inset Formula $f$ -\end_inset - - at a node -\begin_inset Formula $x$ -\end_inset - - depends only on -\begin_inset Formula $x$ -\end_inset - - and the value of -\begin_inset Formula $f$ -\end_inset - - at the -\emph on -parent -\emph default - of -\begin_inset Formula $x$ -\end_inset - -. - Using an auxiliary stack, - design an algorithm analogous to Algorithm F that evaluates a -\begin_inset Quotes eld -\end_inset - -top-down -\begin_inset Quotes erd -\end_inset - - function -\begin_inset Formula $f$ -\end_inset - - at each node of a tree. - (Like Algorithm F, - your algorithm should work efficiently on trees that have been stored in -\emph on -postorder -\emph default - with degrees, - as in (9).) -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Enumerate -[Initialize.] Set the stack to the single element -\begin_inset Formula $(\infty,\Lambda)$ -\end_inset - -, - and let -\family typewriter -P -\family default - point to the -\emph on -last -\emph default - ode of the forest in post-order. -\end_layout - -\begin_layout Enumerate -\begin_inset CommandInset label -LatexCommand label -name "enu:e23317b" - -\end_inset - -[Evaluate -\begin_inset Formula $f$ -\end_inset - -.] Let -\begin_inset Formula $(d,v)$ -\end_inset - - be the value at the top of the stack. - Evaluate -\begin_inset Formula $f(\mathtt{NODE(P)},v)$ -\end_inset - - and save the result as -\begin_inset Formula $\mathtt{VALUE(P)}$ -\end_inset - -. - Then push -\begin_inset Formula $(\mathtt{DEGREE(P)},\mathtt{VALUE(P)})$ -\end_inset - - to the stack. -\end_layout - -\begin_layout Enumerate -[Update the stack.] Pop the element -\begin_inset Formula $(p,v)$ -\end_inset - - from the stack. - If -\begin_inset Formula $p=0$ -\end_inset - -, - repeat this step. - Otherwise push -\begin_inset Formula $(p-1,v)$ -\end_inset - - into the stack. -\end_layout - -\begin_layout Enumerate -[Advance.] If -\family typewriter -P -\family default - is the first node in postorder, - terminate the algorithm. - Otherwise set -\family typewriter -P -\family default - to its predecessor in postorder and return to step -\begin_inset CommandInset ref -LatexCommand ref -reference "enu:e23317b" -plural "false" -caps "false" -noprefix "false" -nolink "false" - -\end_inset - -. -\end_layout - -\end_body -\end_document |
