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.1.lyx | |
| parent | 16ccda6c459c0fd7ca2081e9d541124c28b0c556 (diff) | |
Changed layout for more manageable volumes
Diffstat (limited to '2.3.1.lyx')
| -rw-r--r-- | 2.3.1.lyx | 1075 |
1 files changed, 0 insertions, 1075 deletions
diff --git a/2.3.1.lyx b/2.3.1.lyx deleted file mode 100644 index 92b6c2b..0000000 --- a/2.3.1.lyx +++ /dev/null @@ -1,1075 +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 -\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 -exerc1[01] -\end_layout - -\end_inset - -In the binary tree (2), - let -\family typewriter -INFO(P) -\family default - denote the letter stored in -\family typewriter -NODE(P) -\family default -. - What is -\begin_inset Formula $\mathtt{INFO(LLINK(RLINK(RLINK(T))))}$ -\end_inset - -? -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - - -\begin_inset Formula $H$ -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc4[20] -\end_layout - -\end_inset - -The text defines three basic orders for traversing a binary tree; - another alternative would be to proceed in three steps as follows: -\end_layout - -\begin_layout Enumerate -Visit the root, -\end_layout - -\begin_layout Enumerate -traverse the right subtree, -\end_layout - -\begin_layout Enumerate -traverse the left subtree, -\end_layout - -\begin_layout Standard -using the same rule recursively on all nonempty subtrees. - Does this new order bear any simple relation to the three orders already discussed? -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -Yes, - this is the same as postorder but backwards. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc10[20] -\end_layout - -\end_inset - -What is the largest number of entries that can be in the stack at once, - during the execution of Algorithm T, - if the binary tree has -\begin_inset Formula $n$ -\end_inset - - nodes? - (The answer to this question is very important for storage allocation, - if the stack is being stored consecutively.) -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -There can be up to -\begin_inset Formula $n$ -\end_inset - - nodes in the stack, - in the case that all the right links are null and the tree is just a linked list using the -\begin_inset Formula $\mathtt{RLINK}$ -\end_inset - -. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc13[24] -\end_layout - -\end_inset - -Design an algorithm analogous to Algorithm T that traverses a binary tree in -\emph on -preorder -\emph default -, - and prove that your algorithm is correct. -\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 stack -\family typewriter -A -\family default - empty, - and set the link variable -\begin_inset Formula $\mathtt{P}\gets\mathtt{T}$ -\end_inset - -. -\end_layout - -\begin_layout Enumerate -\begin_inset CommandInset label -LatexCommand label -name "enu:23113b" - -\end_inset - -[ -\begin_inset Formula $\mathtt{P}=\Lambda$ -\end_inset - -?] If -\begin_inset Formula $\mathtt{P}=\Lambda$ -\end_inset - -, - go to step -\begin_inset CommandInset ref -LatexCommand ref -reference "enu:23113d" -plural "false" -caps "false" -noprefix "false" -nolink "false" - -\end_inset - -. -\end_layout - -\begin_layout Enumerate -\begin_inset CommandInset label -LatexCommand label -name "enu:23113c" - -\end_inset - -[Visit -\begin_inset Formula $\mathtt{P}$ -\end_inset - -.] Visit -\begin_inset Formula $\mathtt{NODE(P)}$ -\end_inset - -. - Do -\begin_inset Formula $\mathtt{A}\Leftarrow\mathtt{RLINK(P)}$ -\end_inset - -, - -\begin_inset Formula $\mathtt{P}\gets\mathtt{LLINK(P)}$ -\end_inset - -, - and return to step -\begin_inset CommandInset ref -LatexCommand ref -reference "enu:23113b" -plural "false" -caps "false" -noprefix "false" -nolink "false" - -\end_inset - -. -\end_layout - -\begin_layout Enumerate -\begin_inset CommandInset label -LatexCommand label -name "enu:23113d" - -\end_inset - -[Visit right hand side.] If -\family typewriter -A -\family default - is empty, - the algorithm terminates. - Otherwise set -\begin_inset Formula $\mathtt{P}\Leftarrow\mathtt{A}$ -\end_inset - - and return to step -\begin_inset CommandInset ref -LatexCommand ref -reference "enu:23113b" -plural "false" -caps "false" -noprefix "false" -nolink "false" - -\end_inset - -. -\end_layout - -\begin_layout Standard -We now prove by induction on the number of nodes that, - if we start in step 2, - we traverse the subtree starting at -\begin_inset Formula $\mathtt{P}$ -\end_inset - - in preorder, - leave the stack unchanged, - and proceed to step -\begin_inset CommandInset ref -LatexCommand ref -reference "enu:23113d" -plural "false" -caps "false" -noprefix "false" -nolink "false" - -\end_inset - -, - which clearly would show that the algorithm is correct. -\end_layout - -\begin_layout Standard -For an empty tree, - this is obvious. - For a tree with -\begin_inset Formula $n$ -\end_inset - - nodes, - that we start with the root is obvious, - we do that at step -\begin_inset CommandInset ref -LatexCommand ref -reference "enu:23113c" -plural "false" -caps "false" -noprefix "false" -nolink "false" - -\end_inset - - with the stack empty. - After that step, - setting -\begin_inset Formula $\mathtt{P}\gets\mathtt{LLINK(P)}$ -\end_inset - - and returning to step -\begin_inset CommandInset ref -LatexCommand ref -reference "enu:23113b" -plural "false" -caps "false" -noprefix "false" -nolink "false" - -\end_inset - - means that we get to step -\begin_inset CommandInset ref -LatexCommand ref -reference "enu:23113d" -plural "false" -caps "false" -noprefix "false" -nolink "false" - -\end_inset - - after traversing the left subtree, - which by the induction hypothesis would leave us on step 4 with the stack like it was before but adding the node -\begin_inset Formula $\mathtt{RLINK(P)}$ -\end_inset - -. - Then step 4 clearly means to traverse -\begin_inset Formula $\mathtt{RLINK(P)}$ -\end_inset - - and leave -\family typewriter -A -\family default - like it was before starting processing -\family typewriter -P -\family default -. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc16[22] -\end_layout - -\end_inset - -The diagrams in Fig. - 24 help to provide an intuitive characterization of the position of -\begin_inset Formula $\mathtt{NODE(Q}\$\mathtt{)}$ -\end_inset - - in a binary tree, - in terms of the structure near -\begin_inset Formula $\mathtt{NODE(Q)}$ -\end_inset - -: - If -\begin_inset Formula $\mathtt{NODE(Q)}$ -\end_inset - - has a nonempty right subtree, - consider -\begin_inset Formula $\mathtt{Q}=\$\mathtt{P}$ -\end_inset - -, - -\begin_inset Formula $\mathtt{Q}\$=\mathtt{P}$ -\end_inset - - in the upper diagrams; - -\begin_inset Formula $\mathtt{NODE(Q}\$\mathtt{)}$ -\end_inset - - is the -\begin_inset Quotes eld -\end_inset - -leftmost -\begin_inset Quotes erd -\end_inset - - node of that right subtree. - If -\family typewriter - -\begin_inset Formula $\mathtt{NODE(Q)}$ -\end_inset - - -\family default - has an empty right subtree, - consider -\begin_inset Formula $\mathtt{Q}=\mathtt{P}$ -\end_inset - - in the lower diagrams; - -\begin_inset Formula $\mathtt{NODE(Q}\$\mathtt{)}$ -\end_inset - - is located by proceeding upward in the tree until after the first upward step to the right. -\end_layout - -\begin_layout Standard -Give a similar -\begin_inset Quotes eld -\end_inset - -intuitive -\begin_inset Quotes erd -\end_inset - - rule for finding the position of -\begin_inset Formula $\mathtt{NODE(Q}*\mathtt{)}$ -\end_inset - - in a binary tree in terms of the structure near -\family typewriter -NODE(Q) -\family default -. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -If -\begin_inset Formula $\mathtt{NODE(Q)}$ -\end_inset - - has a nonempty left subtree, - consider -\begin_inset Formula $\mathtt{Q}=*\mathtt{P}$ -\end_inset - - in the upper diagrams; - then -\begin_inset Formula $\mathtt{Q}*=\mathtt{P}$ -\end_inset - - is the left child of -\begin_inset Formula $\mathtt{Q}$ -\end_inset - -. - Otherwise, - if -\begin_inset Formula $\mathtt{NODE(Q)}$ -\end_inset - - has a nonempty right subtree, - -\begin_inset Formula $\mathtt{Q}*$ -\end_inset - - is the right child of -\begin_inset Formula $\mathtt{Q}$ -\end_inset - -. - Otherwise both subtrees are empty and -\begin_inset Formula $\mathtt{Q}*$ -\end_inset - - can be found by going upward until finding a node that is a left child (which could be -\begin_inset Formula $\mathtt{Q}$ -\end_inset - - itself) and taking its right sibling. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc17[22] -\end_layout - -\end_inset - -Give an algorithm analogous to Algorithm S for determining -\begin_inset Formula $\mathtt{P}*$ -\end_inset - - in a threaded binary tree. - Assume that the tree has a list head as in (8), - (9), - and (10). -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -If -\family typewriter -P -\family default - points to a node of a threaded binary tree, - this algorithm sets -\begin_inset Formula $\mathtt{Q}\gets\mathtt{P}*$ -\end_inset - -. -\end_layout - -\begin_layout Enumerate -[Is the left subtree nonempty?] If -\begin_inset Formula $\mathtt{LTAG(P)}=1$ -\end_inset - -, - set -\begin_inset Formula $\mathtt{Q}\gets\mathtt{LLINK(P)}$ -\end_inset - - and terminate the algorithm. -\end_layout - -\begin_layout Enumerate -[Search to the right.] Set -\begin_inset Formula $\mathtt{Q}\gets\mathtt{RLINK(P)}$ -\end_inset - -. - If -\begin_inset Formula $\mathtt{RTAG(P)}=1$ -\end_inset - -, - terminate the algorithm. - Otherwise set -\begin_inset Formula $\mathtt{P}\gets\mathtt{Q}$ -\end_inset - - and repeat this step. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -exerc28[00] -\end_layout - -\end_inset - -After Algorithm C has been used to make a copy of a tree, - is the new binary tree -\emph on -equivalent -\emph default - to the original, - or -\emph on -similar -\emph default - to it? -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -It's equivalent (and similar). -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc30[22] -\end_layout - -\end_inset - -Design an algorithm that threads an unthreaded tree; - for example, - it should transform (2) into (10). - -\emph on -Note: - -\emph default - Always use notations like -\begin_inset Formula $\mathtt{P}*$ -\end_inset - - and -\begin_inset Formula $\mathtt{P}\$$ -\end_inset - - when possible, - instead of repeating the steps for traversal algorithms like Algorithm T. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -This algorithm threads an unthreaded tree -\begin_inset Formula $\mathtt{T}$ -\end_inset - -. - The fields -\begin_inset Formula $\mathtt{LTAG}$ -\end_inset - - and -\begin_inset Formula $\mathtt{RTAG}$ -\end_inset - - in the nodes of -\begin_inset Formula $\mathtt{T}$ -\end_inset - - are considered to initially contain arbitrary values that we do not need to preserve. -\end_layout - -\begin_layout Enumerate -[Initialize list head and variables.] Get -\begin_inset Formula $\mathtt{P}\Leftarrow\mathtt{AVAIL}$ -\end_inset - - and set -\begin_inset Formula $\mathtt{LTAG(P)}\gets\mathtt{RTAG(P)}\gets0$ -\end_inset - -, - -\begin_inset Formula $\mathtt{LLINK(P)}\gets\mathtt{T}$ -\end_inset - -, - -\begin_inset Formula $\mathtt{RLINK(P)}\gets\mathtt{P}$ -\end_inset - -, - -\begin_inset Formula $\mathtt{T}\gets\mathtt{P}$ -\end_inset - -, - and -\begin_inset Formula $\mathtt{Q}\gets\mathtt{P}\$$ -\end_inset - -. - -\emph on -(We'll use -\begin_inset Formula $\mathtt{Q}$ -\end_inset - - as a pointer to the node being considered and -\begin_inset Formula $\mathtt{P}$ -\end_inset - - and -\begin_inset Formula $\mathtt{R}$ -\end_inset - - as pointers to the next and previous nodes, - respectively. - We only ever compute the next node in inorder from the last node calculated this way, - which makes it trivial to use algorithm T as a coroutine.) -\end_layout - -\begin_layout Enumerate -\begin_inset CommandInset label -LatexCommand label -name "enu:23122b" - -\end_inset - -[Are we over?] If -\begin_inset Formula $\mathtt{RLINK(Q)}=\mathtt{Q}$ -\end_inset - -, - the algorithm terminates. - -\emph on -(This loop only happens in the list head.) -\end_layout - -\begin_layout Enumerate -[Step.] Set -\begin_inset Formula $\mathtt{R}\gets\mathtt{Q}\$$ -\end_inset - -. - If -\begin_inset Formula $\mathtt{LLINK(Q)}=\Lambda$ -\end_inset - -, - set -\begin_inset Formula $\mathtt{LTAG(Q)}\gets0$ -\end_inset - - and -\begin_inset Formula $\mathtt{LLINK(Q)}\gets\mathtt{P}$ -\end_inset - -, - otherwise set -\begin_inset Formula $\mathtt{LTAG(Q)}\gets1$ -\end_inset - -. - Similarly, - if -\begin_inset Formula $\mathtt{RLINK(Q)}=\Lambda$ -\end_inset - -, - set -\begin_inset Formula $\mathtt{RTAG(Q)}\gets0$ -\end_inset - - and -\begin_inset Formula $\mathtt{RLINK(Q)}\gets\mathtt{R}$ -\end_inset - -, - otherwise set -\begin_inset Formula $\mathtt{RTAG(Q)}\gets1$ -\end_inset - -. - Finally set -\begin_inset Formula $\mathtt{P}\gets\mathtt{Q}$ -\end_inset - -, - -\begin_inset Formula $\mathtt{Q}\gets\mathtt{R}$ -\end_inset - -, - and return to step -\begin_inset CommandInset ref -LatexCommand ref -reference "enu:23122b" -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 -rexerc37[24] -\end_layout - -\end_inset - -(D. - Ferguson.) If two computer words are necessary to contain two link fields and an -\begin_inset Formula $\mathtt{INFO}$ -\end_inset - - field, - representation (2) requires -\begin_inset Formula $2n$ -\end_inset - - words of memory for a tree with -\begin_inset Formula $n$ -\end_inset - - nodes. - Design a representation scheme for binary trees that uses less space, - assuming that -\emph on -one -\emph default - link and an -\begin_inset Formula $\mathtt{INFO}$ -\end_inset - - field will fit in a single computer word. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -If we allow for a second null value (call it -\begin_inset Formula $\lambda$ -\end_inset - -, - which could be e.g. - a pointer to a specific word in the program code or to a sentinel constant, - or 4001 in MIX, - or 1 in MMIX), - then we could implement the solution in the book, - which is that, - if -\begin_inset Formula $\mathtt{LINK(P)}=\Lambda$ -\end_inset - -, - then -\begin_inset Formula $\mathtt{LLINK(P)}=\mathtt{RLINK(P)}=\Lambda$ -\end_inset - -, - and otherwise -\begin_inset Formula $\mathtt{LLINK(P)}=\mathtt{LINK(P)}$ -\end_inset - - and -\begin_inset Formula $\mathtt{RLINK(P)}=\mathtt{LINK(P)}+1$ -\end_inset - - (or -\begin_inset Formula $+\mathtt{sizeof(int)}$ -\end_inset - -), - except that if -\begin_inset Formula $\mathtt{LINK(LINK(P))}=\lambda$ -\end_inset - - or -\begin_inset Formula $\mathtt{LINK(LINK(P)}+1\mathtt{)}=\lambda$ -\end_inset - - then -\begin_inset Formula $\mathtt{LLINK(P)}$ -\end_inset - - or -\begin_inset Formula $\mathtt{RLINK(P)}$ -\end_inset - - is respectively -\begin_inset Formula $\Lambda$ -\end_inset - -. -\end_layout - -\end_body -\end_document |
