Discrete Dynamics Lab

Update September 2023 ddlabz11

is documented in this updated hyperref .pdf book (EDD) ExploringDiscreteDynamics‑updateSept2023
This is an updated version of the paperback Exploring Discrete Dynamics, Second Edition, 2016, Luniver Press -- available at Amazon-UK, Amazon-USA, and other online book sellers.

This Sept 2023 update (with minor updates on ddlabz10 May and ddlabz11 Aug) adds the new "interactive basin of attraction field" (ibaf-graph) and augments/enhances methods for the network-graph and attractor jump-graph, including ...

  • improved methods to manipulate interactive graphs.
  • extending the range of node displays.
  • the ibaf-graph layout from basins at the jump-graph nodes.
  • multi-line labels can be added at nodes.
  • vector PostScrip of current graph display.
  • other additions/improvements --- cutting/adding links, pruning leaf-states by "gap" and unreachable nodes, scaling and ranking nodes/links, the probabilistic "ant", the adjacency-matrix, --- and some bug fixes.

An ibaf-graph v=3, k=3, n=8 with 17 basins (components) dragged to new posttions. Nodes are scaled according to inputs. The lower right basin has been manipulated, some subtree node displays were togged to 2d patterns and numbers --- a label was created upstream of node 574. The rcode rule-table (hex) is 0861226184514a.

DDLab has been updated at regular intervals since its release in 1995. Its precursor was the Atlas software included on diskette inside the back cover of "The Global Dynamics of Cellular Automata" 1992.
Click here for a list and downloads of this and older versions,
and EDD-Sept2023 for the latest manual.
Below are links to previous updates,

Feb 2021 (EDD2ndEd-update)
xNov 2018 (EDD2ndEd-update)
xxJan 2018 (EDD2ndEd-update)
xxxMarch 2017
xxxxMay 2016 (EDD2ndEd)
xxxxxSept 2015
xxxxxxMay 2013
xxxxxxxJan 2013
xxxxxxxxJune 2012 (EDD)
xxxxxxxxxNov 2005
xxxxxxxxxxDec 2003
xxxxxxxxxxxJuly 2001 (Manual2001)
xxxxxxxxxxxxxxFeb 1999
xxxxxxxxxxxxxxxSept 1997

To learn more see EDD chapter 20 (click for an immediate look), or the complete EDD book, and experiment with DDLab.
Download compiled versions of ddlabz11 for Linux, Mac, Cygwin, DOS. The ddlabz11 source code is available, including Makefiles, readme, GNU license, and notes.
Click figures to enlarge. #x.x.x refers to the relevant Section (or Figure x.x/Table x.x) in the latest EDD.

ibaf-graph manipulated Figure #4.3


Selecting and creating an ibaf-graph as above is described in Quick Start Examples #4.2.3 (click for an immediate look)
ibaf-graph copies the usual layout #Figure 20.13



A binary 1d CA, v2k3, n=10, rule 9 with 7 basins.
Above: Default presentation of the ibaf-graph with scaled nodes/links, copying the default or amended uncompressed basin of attraction field layout.
Left: The same ibaf-graph but maniputated with drag options. Nodes were relabelled in basins 4 (decimal) and 5 (2d patterns). The 3rd basin was dragged lower, expanded, and some fragments were dragged, expanded, and relabelled in decimal, 1d, and 2d. Note the sequence of decimal nodes starting at 888 (top right) which follow output arrows leading to the attractor.
drag with elastic or "snap" animation: elstc/snap-d Figure 20.6
 
To activate a node, click with the pointer at a node-disc center --- a right/left click may be required initially. Activation is indicated by the node number in the drag-reminder title and possibly a momentary shake of the graph.

To drag, click and hold down the left mouse button while moving --- drag the active node (+ fragment) to a new position which will stabilise on left-button release.
Dragging can be done with elastic (default) or "snap" animation which is more efficient for large graphs, enter elstc/snap-d to toggle between.

Left: shows an example using "snap" for an isolated basin in the ibaf-graph — the 4th basin in the ibaf-graph above.
(a) dragging node 38 and its linked fragment by inputs, its sub-tree, to a new position with the left mouse button depressed, leaving a trail.
(b) On left button release, node 38+subtree snaps into place, the same result as from dragging by elastic animation. (1d CA v2k3, n=10, rule 9)

The graphs and options are presented at two interchangeable stages with distinct context dependent top-right reminders: the initial-reminder where options apply to all nodes simultaneously, and the drag- reminder where options generaly apply to a single node, a geometric range of nodes (blocks), or most significantly the selected node and its linked fragment by inputs/outputs/either and distance from the active node. Exmples below are for the ibaf-graph — the network-graph and jump-graph reminders are similar. #20.1

initial-reminder applies to whole graph

IBAF-graph: drag-(def ) PScript-P net-# ant-a unscram-u win-w rank0-k
settings-S rot-x/X flip-h/v nodes-(/)/= links-{/} both-[/]
Unreach-U matrix-t/T nodes-n/N links-l Labels-+ arrows-A/
layout: file-f graph-g circle/spiral-o/O 1d/2d(tog)/3d-1/2/3 rnd-r/R quit-q

drag-reminder applies to the active node and its fragenent

node 0, eather, step=nolimit: leftb-drag PScript-P elstc/snap-d gap-g
not active?-rightb first, rot-x/X flip-h/v nodes-(/)/=/E links-{/} both-[/] just-j
Lnk0:cut/restore-c/r Lnks0-0:cut/add/restore-C/A/R net-#
step-(1-9) nolimit-0 single-s in/out/either-i/o/e all-a exit-q

To decode these options see EDD chapter 20 (#20.2-#20.4, and #20.9, #20.10) (click for an immediate look)

ibaf-graph toggling node display "=" (equals sign) Figure #20.5



Toggling between 6 successive node displays in the ibaf-graph with "=" (equals sign): disc/dec/hex/1d/2d/empty. For the network and jump graphs its: disc/dec/empty only.
Lower Right: Examples of 5 displays ('empty' is skipped). Upper Right: a created 'label' (#20.12) noting the 6 alternatives. A basin for 1d CA v2k3, n=10, rule 30.
change node and font size with "(" and ")" Figure #20.4


A sample from the full range of font pixel sizes from min 6px to max 150px, made with a network-graph in drag mode. Contract/expand with "(" and ")" by -/+ 1px 6-40, 2px 41-80, 4px 81-150.
linked-fragemets by link status and distance Figure #20.7

To set the link status and create a linked fragement rooted on the active node, apply one of the options "in/out/either-i/o/e" where "in-i" traces imputs upstream, "out-o" traces outputs downstream, and "eather-e" traces any link irrespective of direction. Enter "nolimit-0" (zero) for an unlimited distance from the active node. To set a limit in link-steps "step-(1-9)"” — enter a number between 1 and 9. For the ibaf-graph, link-steps are the same as time-steps in system dynamics.

A regular 2d network-graph 6x6 with linked status "eather-e". A 2d linked fragment on active node 14 was dragged, rotated, nodes toggled to decimal, and font enlarged. Left: distance step=1. Right: distance step=3..
network-graph with defined blocks Figure #20.9

A block is a sequence of node numbers (in 1d, 2d, or 3d) between two selected nodes. In single node status, enter "Block-B" to open a window to set a block (section 20.11) — the defaults are the two most recently active nodes. While the block is active any changes/manipulations apply to the whole block, and dragging any node (whether inside or outside the block) will also drag the block.

A regular network-graph with a block defined, dragged, rotated, nodes toggled to decimal, and font enlarged. Left: 2d k=4 6x6 with a 3x3 block. Right: 3d k=6 5x5x5 with a 4x4x3 block.
Labels at nodes --- single status, Label-L/+ Figure #20.19



Refer to EDD chapter 20 (#20.12) (click for an immediate look)

Arbitrary labels of up to 90 characters and multiple lines can be made at graph nodes to overwrite the current automatic node display. This is done from the drag-graph in 'single:' status where "Label-L/+" appears in the drag-reminder --- enter "L" to set a label at the active node. Existing labels are toggled on/off with "+" (plus key) in any situation including the initial-graph which inherit labels from the drag-graph. Non-labelled nodes are displayed as usual and toggled with key "=". The following top-right prompts appear,

node=287 (0-1024) Label:empty (for example)
accept-ret, new-n:n enter new Label max 90 charsno (if 'new-n' was selected)
back-backspace, linebreaks-'\', complete/exit-ret (reminder notes)
(flashing cursor for input appears here)

Left: An example of a single ibaf basin, nodes/links unscaled. Some arbitrary labels were created, overwriting the current state display which can still be toggled (key "=") for single states or fragments --- for example the subtree to state 81 has been toggled to show all its inputs as numbers, and to state 216 as 2d patterns. The same label methods apply for the network and jump graphs.

Saving jump-graph basins to reload in ibaf-graph Figure #20.22



Refer to EDD chapter 20 (#20.14) (click for an immediate look)

For an uncompressed basin of attraction field, state-space coordinates, drawn in the f-jump-graph with
"basinsi/I/s" in the initial reminder (#20.7.3), can be saved, to reload into the ibaf-graph. Once basins are drawn, the top-right basin data window (#27.2.1) will pause, with the following prompt in red,

PBC basin types=15 total basins=15 (for v2k3 1d CA rcode 110, n=10)
n=10 field=1024 g=442=0.42 0.033sec cont-ret, savelayout-s:

Enter "savelayout-s" to record the coordinates of each state in state-space (a .grh file — #20.16) — which can later be loaded back into the ibaf-graph of the same system, with its inital option "file-f" (#20.6.2) to reproduce exactly the same layout (figure 20.22). This method gives the ibaf-graph all the geometric possibilities (circle/spiral/1d/2d/3d), their variations or any other layout --- of the jump-graph.

Left: Reloading jump-graph basins coordinates (.grh file) into the ibaf-graph for an exact copy of the state-space layout, in this case ibaf basins in aa circle. 1d v2k3 CA rcode 110, n=10

ibaf-graph and adjacency-matrix --- CA rule 30 #20.19

The adjacency-matrix (“jump-table” for the jump-graph) is a square plot of node numbers, where rows give outputs and columns inputs, with the origin top-left, and other info #20.19.
(click for an immediate look)
For the ibaf-graph (section 20.19.3) the matrix is a pattern of pixels (or blocks) where rows show the single sucessor of each state (output), and columns show each state’s pre-images (inputs) — there can be zero or more, #29.7.4.

The ibaf-graph of v2k3 CA rule 30 n=10 with 6 basins, figure#20.26. Its ibaf-matrix is shown to the right.

The ibaf-matrix (figure#20.25) of the ibaf-graph shown left. Compare the pixel-pattern with the "return map" of the same rule based on n=150 space-time patterns --- shown right. Note the identical fractal signature

The return map for the same rule, n=150, plotting the state at each time-step, converted into a decimal number 0-2, against its successor, for about 50,000 time-steps. #31.2.2.2 and figure#31.5.

Return to the Discrete Dynamics Lab home page.
Last modified: Sept 2023