Software Architecture III Leveraging Nature to Build Better Systems Yuriy Brun http://www.cs.washington.edu/homes/brun/
Software Architecture IIILeveraging Nature to Build Better Systems
Yuriy Brun
http://www.cs.washington.edu/homes/brun/
Why Nature? Nature Computes Tiles Tile Software Conclusions
Outline
1 Why Nature?
2 Using Nature to Compute
3 Tiles
4 Tile Software
5 Conclusions
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 2 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Outline
1 Why Nature?
2 Using Nature to Compute
3 Tiles
4 Tile Software
5 Conclusions
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 3 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Systems in Nature
Resilient to
deathmalfunctionmaliciousagents
Self-healing
Fault-tolerant
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 4 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
In Contrast: Software
Less-complex systemsFault-tolerance is “intelligently designed”Not expected to recover from catastrophes
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 5 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Genetic Algorithms
Have been used to:
Design of fighter-planes airfoils [HO03]
Train scheduling
Automatic software bugpatching [WNGF09]
Data mirroring [RKCM09]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 6 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Neural Networks
Have been used to:
Classification
Sales forecasting / marketing
Medical diagnoses [SKR01]
Credit evaluation [Wes00]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 7 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Distributed Robotics
Have been used to:
Search and rescue scenarios [MEB+10]
Vacuum design
Sensor networks [AAC+00]
Education
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 8 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Robofish
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 9 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Outline
1 Why Nature?
2 Using Nature to ComputeDNA ComputingBacteria GatesTile Assembly Model
3 Tiles
4 Tile Software
5 Conclusions
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 10 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Leonard M. Adleman
“The manipulation of DNA to solvemathematical problems is redefiningwhat is meant by ‘computation’.”
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 11 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
A Bit of History
Adleman’s research
RSA public key cryptosystem [RSA78]
Computer viruses [Adl90]
HIV modeling [AW93]
DNA computation [Adl94]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 12 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
DNA Turing Machine
[Adl98]A, T, C, and G can encode information
A DNA strand is a data-storing tape
Enzymes can encode states and rules for manipulating the tape
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 13 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Hamiltonian Path Problem
[Adl98]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 14 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Hamiltonian Path Problem with DNA
[Adl98]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 15 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Implementing the DNA Algorithm
Conventional algorithm DNA algorithm
1. Generate a set of random paths Mix city and flight strands
2. Select paths that start and endat proper cities
PCR
3. Select proper-length paths Electrophoresis gel
4. Select paths that visit each city Watson & Crick pairing
5. The remaining paths representthe solution
PCR, electrophoresis, and se-quencing
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 16 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
3-SAT With DNA
In 2002, Braich et al. [BCJ+02] developed a DNA computer to solve20-variable 3-SAT problems.
Worked most of timeError rates grew proportionally to the number of variables
A few other models emerged
Sticker modelTile assembly model
more on this later. . .
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 17 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Protein Production Control
BioBricks [KS97]
Controlling what proteins a cellproduces
Basis for the InternationalGenetically Engineered Machine(iGEM) competition
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 18 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
DNA Gates
mR
NA 2
mRNA 1
Drug
Drug
Drug
Drug
mR
NA 1
mRNA 2
DrugD
rug
Drug
Drug
Binary gates that act on DNA-strand inputs [BG06]
Previous work used enzymes [BGBD+04]
Later work at Caltech improved the design [QW08]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 19 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Self-Assembly in Nature
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 20 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Self-Assembly in Nature
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 20 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Self-Assembly in Nature
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 21 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Self-Assembly in Nature
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 21 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Self-Assembly in Nature
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 22 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Self-Assembly in Nature
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 22 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Tile Assembly Model [Win98b]
Tile: a square with labels
Each label has a strength
Tiles attach if labels arestrong enough
0
1
1 #000
1
1 100
1
1 101
0
0 111
1
0 010
0
0 001
10 01
0
0
0 00
0
0
0 000
0
0 000
0
0 001
1
0 011
1
0 010
0
0 001
1
0 010
00 00
0
0
#1 #200
0
#0
#101
0
0
#011
1
0 011
1
0 010
0
0 001
1
0 010
0
0 00
0
0
#2 #300
0
#1
#201
1
#0
#110
1
1
#000
1
1 101
0
0 111
1
0 010
0
0 00
0
0
0 000
0
0 001
1
0 010
0
0 000
0
0 001
1
0 01
1
1
0 010
0
#4 #500
0
#3
#401
1
#2
#310
0
#1
#200
0
#0
#100
1
1
#00
11
11
11
11
11
00
#0 100
00
0 0
#2 1
#3 1
0 0
#5 1
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 23 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Tile Assembly Model [Win98b]
Tile: a square with labels
Each label has a strength
Tiles attach if labels arestrong enough
0
1
1 #000
1
1 100
1
1 101
0
0 111
1
0 010
0
0 001
10 01
0
0
0 00
0
0
0 000
0
0 000
0
0 001
1
0 011
1
0 010
0
0 001
1
0 010
00 00
0
0
#1 #200
0
#0
#101
0
0
#011
1
0 011
1
0 010
0
0 001
1
0 010
0
0 00
0
0
#2 #300
0
#1
#201
1
#0
#110
1
1
#000
1
1 101
0
0 111
1
0 010
0
0 00
0
0
0 000
0
0 001
1
0 010
0
0 000
0
0 001
1
0 011
1
0 01
0
0
#4 #500
0
#3
#401
1
#2
#310
0
#1
#200
0
#0
#100
1
1
#00
11
11
11
11
11
00
#0 100
00
0 0
#2 1
#3 1
0 0
#5 1
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 23 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Tiles Can:
Assemble
linear polymers [ACG+01]squares [RW00, AGHM02, ACG+02]computable shapes [SW07]
Count [Win98a, Moi05, BRW05]
Compute Binomial Coefficients [Win98a, RPW04]
Emulate Turing Machines [Win98b]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 24 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Outline
1 Why Nature?
2 Using Nature to Compute
3 TilesAdding and MultiplyingSolving 3-SAT
4 Tile Software
5 Conclusions
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 25 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Computing with Tiles
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 26 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Adding with Tiles [Bru07]
1
1
11 11
1
01 00
1
1 100
1
0 01
0
0
0 000
0
0 111
0
00 11
0
11 0
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 27 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Adding with Tiles [Bru07]
1
111 1
1
1
01 00
1
1 100
10 01
0
0
0 000
0
0 111
0
00 11
0
11 0
34 + 27
00
11
00
00
00
11
11
11
00
11
11
00
0
00
00
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 27 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Adding with Tiles [Bru07]
1
111 1
1
1
01 00
1
1 100
10 01
0
0
0 000
0
0 111
0
00 11
0
11 0
34 + 27 = 61
0
1
0 011
11 00
0
0
0 110
1
0 010
1
0 011
0
0 0100
11
00
00
00
11
11
11
00
11
11
00
0
00
00
0
0
0 00
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 27 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Multiplying with Tiles [Bru07]
11
11
11
2121
01
10
10
2121
11
11
01
212010
01
10
11 20
00
00
1121 200
0
00
01
20 20
10
01
00
10 20
11
11
101111
01
10
11
112101
10
011120
11
11
00
111000
00
10
11 10
10
01
11
11 1010
01
01
10 10
00
00
00
10 10
01
10
10
01 01
11
11
11
01 0111
11
01
00 01
01
10
00
00 01
10
01
11
01 00
00
00
10
01 0000
00
00
00 00
10
01
01
00 00
11
11
1
11
01
10
1
00
00
00
0
00
00
00
0
11
01
10
00
2120
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 28 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Multiplying with Tiles [Bru07]
11
11
11
2121
01
10
10
2121
11
11
01
2120
10
01
10
11 20
00
00
11
21 2000
00
01
20 20
10
01
00
10 20
11
11
10
1111
01
10
11
112101
10
01
1120
11
11
00
111000
00
10
11 10
10
01
11
11 1010
01
01
10 10
00
00
00
10 10
01
10
10
01 01
11
11
11
01 0111
11
01
00 01
01
10
00
00 01
10
01
11
01 00
00
00
10
01 0000
00
00
00 00
10
01
01
00 00
11
11
1
11
01
10
1
00
00
00
0
00
00
00
0
11
01
10
00
212087× 45
11
11
11
11
11
00
1 100
00
00 0
10 1
10 1
00 0
10 1
00
00
00
00
00
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 28 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Multiplying with Tiles [Bru07]
11
11
11
2121
01
10
10
2121
11
11
01
2120
10
01
10
11 20
00
00
11
21 2000
00
01
20 20
10
01
00
10 20
11
11
10
1111
01
10
11
112101
10
01
1120
11
11
00
111000
00
10
11 10
10
01
11
11 1010
01
01
10 10
00
00
00
10 10
01
10
10
01 01
11
11
11
01 0111
11
01
00 01
01
10
00
00 01
10
01
11
01 00
00
00
10
01 0000
00
00
00 00
10
01
01
00 00
11
11
1
11
01
10
1
00
00
00
0
00
00
00
0
11
01
10
00
212087× 45 = 3915
11
11
11
11
11
00
1 100
00
00 0
10 1
10 1
00 0
10 1
00
00
00
00
00
11
11
1
1111
11
1
1111
11
1
1111
11
1
1111
11
1
11 00
00
0
1100
00
011 0
0
00
011 0
0
00
0
11 00
00
0
11 00
00
0
11
10
01
11
01 0011
11
11
01 0111
11
11
01 0101
10
00
00 0110
01
11
01 0001
10
00
00 0110
01
11
01 0001
10
00
00 0100
00
00
00 00 00
00
00
00 00 00
00
0000 00
10
01
01
10 1010
01
11
11 1001
10
11
112101
10
10
212111
11
01
2120
10
01
01
10 1010
01
01
10 1000
00
10
11 1011
11
10
111101
10
11
1121
00
00
0
11
00
00
00
00 00
10
01
01
00 0010
01
01
00 0000
00
00
00 0010
01
11
01 0001
10
10
01 01
10
01
10
11 2001
10
01
112010
01
1011 201
1
11
0011100
0
00
00
10 1000
00
00
10 1000
00
00
10 10
11
11
01
212010
01
1011 200
1
10
0111200
0
00
11
21 2001
10
00
212010
01
00
10 2000
00
00
10 10
11
11
1101 011
1
11
01
00 0100
00
10
01 0001
10
00
00 0100
00
10
01 0011
11
01
00 0100
00
00
00 00
10
01
01
10 1010
01
01
10 1000
00
00
10 1010
01
01
10 1000
00
1011 100
1
10
1111211
1
11
11
212101
10
00
212010
01
10
11 2011
11
00
111010
01
11
11 1011
11
00
1110
00
00
0
11
00
00
00
00 00
00
00
00
00 00
00
00
00
10 10
00
00
00
10 10
00
00
00
10 10Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 28 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
3-SAT
Variables: x0, x1, x2 . . .
Literals: x0, ¬x0, x1, ¬x1, . . .
Clauses: (x2 ∨ ¬x1 ∨ ¬x0)
Formula: (x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0)
The question: Does there exist an assignment of TRUE /FALSE values to the variables that makesthe formula TRUE?
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 29 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Θ(n2)-Tileset Approach [LL99]
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
|
|
x2
|
|
x0
|
|
¬x1
|
||
x1¬x1¬x2
12
c
||
| cc¬x1x2 x0¬x2¬x0
0
¬x0
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 30 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Θ(n2)-Tileset Approach [LL99]
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
c
c
x0 0
|
|
x2
|
|
x0
|
|
¬x1
|
||
x1¬x1¬x2
12
c
||
| cc¬x1x2 x0¬x2¬x0
0
¬x0
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 30 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Θ(n2)-Tileset Approach [LL99]
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
x1¬x1¬x2
12
c
||
| cc¬x1x2 x0¬x2¬x0
0
¬x0
c
c
x0 0
OK
x0
x0
x0
x1
x1
x0
x0
x2
x2
x0
x0
¬x1
¬x1x0
x0¬x0
¬x0
x0
x0
¬x2
¬x2
x0
x0
c
c
x0
x0
|
|
x0
¬x2
¬x2
x0
x0
c
c
x0
x0
¬x0
¬x0
x0
x0
¬x1
¬x1
x0
x0
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 30 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Θ(n2)-Tileset Approach [LL99]
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
x1¬x1¬x2
12
c
||
| cc¬x1x2 x0¬x2¬x0
0
¬x0
c
c
x2 2
c
c
x0 0
OK
x1
¬x1
¬x1
c
c
¬x1
1
OK
x0
x0
x0
OK
x2
x2
x2
OK
OK
x2
x2
OK
OK
¬x1
¬x1
x1
x1
x2
x2
x1
x1
x0
x0
x2
x2
x0
x0
x1
x1
¬x1
¬x1
x2
x2
¬x1
¬x1
¬x0
¬x0
x2
x2
¬x2
¬x2
x2
x2
¬x0
¬x0¬
x1
¬x1
¬x2
¬x2
¬x1
¬x1
¬x1
¬x1x0
x0¬x0
¬x0
x0
x0
¬x2
¬x2
x0
x0
c
c
x2
x2
c
c
x0
x0
c
c
¬x1
¬x1
|
|
x2
|
|
x0
|
|
¬x1
OK
OK
x2
x2
¬x2
¬x2
x2
x2
¬x2
¬x2
¬x1
¬x1
¬x2
¬x2
x0
x0
c
c
x2
x2
c
c
x0
x0
c
c
¬x1
¬x1
¬x0
¬x0
x2
x2
¬x0
¬x0
¬x1
¬x1
¬x0
¬x0
x0
x0
OK
x1
¬x1
¬x1
¬x1
¬x1
x0
x0
OK
OK
x2
x2
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 30 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Θ(n2)-Tileset Approach [LL99]
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
x1¬x1¬x2
12
c
||
| cc¬x1x2 x0¬x2¬x0
0
¬x0
c
c
x2 2
c
c
x0 0
OK
x1
¬x1
¬x1
c
c
¬x1
1
OK
x0
x0
x0
OK
x2
x2
x2
OK
OK
x2
x2
OK
OK
¬x1
¬x1
x1
x1
x2
x2
x1
x1
x0
x0
x2
x2
x0
x0
x1
x1
¬x1
¬x1
x2
x2
¬x1
¬x1
¬x0
¬x0
x2
x2
¬x2
¬x2
x2
x2
¬x0
¬x0¬
x1
¬x1
¬x2
¬x2
¬x1
¬x1
¬x1
¬x1x0
x0¬x0
¬x0
x0
x0
¬x2
¬x2
x0
x0
c
c
x2
x2
c
c
x0
x0
c
c
¬x1
¬x1
|
|
x2
|
|
x0
|
|
¬x1
OK
|| |
|
||
c
| ||
¬x0
| |
x1
|| ||
¬x2|| ||
OK
|| ||
OK
OK
x2
x2
¬x2
¬x2
x2
x2
¬x2
¬x2
¬x1
¬x1
¬x2
¬x2
x0
x0
c
c
x2
x2
c
c
x0
x0
c
c
¬x1
¬x1
¬x0
¬x0
x2
x2
¬x0
¬x0
¬x1
¬x1
¬x0
¬x0
x0
x0
OK
x1
¬x1
¬x1
¬x1
¬x1
x0
x0
OK
OK
x2
x2
c
| ||
c
| ||OK
|| |
¬x2
|| ||
¬x0
| |
OK
|| |Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 30 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Θ(n2)-Tileset Approach [LL99]
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
no tile can attach
x1¬x1¬x2
12
c
||
| cc¬x1x2 x0¬x2¬x0
0
¬x0
c
c
x1 1
c
c
x2 2
c
c
x0 0
OK
x1
x1
x1
OK
x0
x0
x0
OK
x2
x2
x2
OK
OK
x1
x1
OK
OK
x2
x2
¬x1
¬x1
x1
x1
¬x0
¬x0x1
x1
¬x2
¬x2
x1
x1
x2
x2
x1
x1
x1
x1
x0
x0
x2
x2
x0
x0
¬x1
¬x1
x2
x2
¬x0
¬x0
x2
x2
¬x2
¬x2
x2
x2
¬x1
¬x1x0
x0¬x0
¬x0
x0
x0
¬x2
¬x2
x0
x0
c
c
x1
x1
c
c
x2
x2
c
c
x0
x0
|
|
x1
|
|
x2
|
|
x0
OK
|| |
c
| ||
¬x1
| |
¬x2
| |
¬x0
| |
¬x2|| ||
OK
|| ||
OK
OK
x2
x2
¬x2
¬x2
x1
x1
¬x2
¬x2
x2
x2
¬x2
¬x2
x0
x0
c
c
x1
x1
c
c
x2
x2
c
c
x0
x0
¬x0
¬x0
x1
x1
¬x0
¬x0
x2
x2
¬x0
¬x0
x0
x0
¬x1
¬x1
x1
x1
¬x1
¬x1
x2
x2
¬x1
¬x1
x0
x0
c
| ||
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 30 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
The Θ(n2) Tileset 3-SAT Solution [LL99]
Θ(n2) tile types
Probability of success ≥(12
)n
c
cxi 1
c
c
¬xi
1
OK
ℓi
ℓi ℓi
OK
OK
ℓiℓi
ℓi
ℓi
ℓj ℓj
c
c
ℓiℓi
|
|
ℓi
OK|| |
|
||
c
| ||
ℓi
| |
OK
|| ||
ℓi
|| ||
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 31 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Encoding Formulae with a Θ(1) Tileset
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 32 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Comparing Literals
x122 vs. x122
*v
v
v v
v
v
0 0
v
v
1 1
1
*1
*1 1
*0
0
0 *0
*1
1
1 *1
0
0
v v
1
1
v v
0
*0
*1 1
1
*1
*0 0
v
*v
*0 0
0
0
0 0
1
1
0 0
0
0
1 1
1
1
1 1
1
10
0
v
v1 0
10
1 1
11
1
1
v
v
1 1
v
v
1 1
v
v
1 1
0
0
1 1
v
v
1 1
0
0
1 1
0
0
1 1
1
1
1 1
1
1
1 1
1
1
1 1
0
0
v v
1
1
v v
1
1
v v
1
1
v v
1
1
v v
0
0
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
0
0
1 1
*0
0
0 *0
0
*0
*1 1
0
0
1 1
0
0
1 1
0
0
1 1
1
1
1 1
1
1
1 1
1
1
1 1
1
1
1 1
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
*1
1
1 *1
1
1
1 1
1
1
1 1
1
1
1 1
*1
1
1 *1
1
1
1 1
1
1
1 1
1
1
1 1
1
1
1 1
1
*1
*1 1
*1
1
1 *1
1
1
1 1
1
1
1 1
1
*1
*1 1
*1
1
1 *1
x122 vs. x114
1
1
0 *0
1
10
0
v
v1 0
0
1 1
11
1
1
0
*v
v
v v
v
v
0 0
v
v
1 1
*0
0
0 *0
*1
1
1 *1
0
0
v v
1
1
v v
0
*0
*1 1
1
*1
*0 0
v
*v
*0 0
0
0
0 0
1
1
0 0
0
0
v v
1
1
v v
1
1
v v
1
1
v v
1
1
v v
0
0
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
0
0
1 1
*0
0
0 *0
1
1
1 1
1
1
1 1
1
1
1 1
1
1
1 1
1
10 0
1
1
0 0
1
1
0 0
1
1
0 0
v
v
0 0
v
v
1 1
v
v
1 1
v
v
1 1
0
0
0 0
0
0
1 1
0
0
1 1
0
0
1 1
1
1
1 1
1
1
1 1
1
1
1 1
1
1
0 0
0
*0
*0 00
01 1
0
0
1 1
0
0
1 11
1
1 11
11 1
1
1
1 1
1
1
0 0
1
10 0
1
1
0 01
11 1
1
1
1 1
1
1
1 1
1
1
1 1
1
1
1 1
1
1
1 1
1
1
1 1
1
1
1 1
1
1
1 1
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 33 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Solving 3-SAT
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 34 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Solving 3-SAT
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
c
c
v ?
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 34 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Solving 3-SAT
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
c
c
v ?
c
c
0 0
c
c
0 0
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 34 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Solving 3-SAT
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
c
c
v ?
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
0 0
c
c
0 0
c
c
0 0
*v
v
v v
v
v
0 0
v
*v
*0 0
0
0
v v
*0
0
0 *0
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 34 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Solving 3-SAT
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
c
c
v ?
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
0 0
c
c
0 0
c
c
0 0
c
c
0 0
c
c
v v
c
c
0 0
c
c
0 0
c
c
v v
c
c
0 0
*v
v
v v
¬v
¬v
v v
v
v
0 0
¬v
¬v
0 0
v
*v
*0 0
*v
v
v v
v
v
0 0
v
*v
*0 0
*v
v
v v
v
v
0 0
v
*v
*0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v¬v
¬v0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
0 0
0
0
v v
*0
0
0 *0
1
1
0 *0
1
1
v v
1
1
0 0
|
|
v
|
|
0
0
0
v v
0
0
0 0
0
0
0 0
0
0
v v
0
0
0 0
0
0
0 0
1
1
v v
1
1
0 0
1
1
0 0
0
0
v v
0
0
0 0
0
0
0 0
0
0
v v
0
0
0 0
0
0
0 0
1
1
v v
1
1
0 0
1
1
0 0
0
0
v v
0
0
0 00
00 0
0
0v v
0
0
0 0
0
0
0 01
1
v v
1
1
0 0
1
1
0 0
0
0
v v
0
0
0 0
0
0
0 0
0
0
v v
0
0
0 0
0
0
0 0
1
1
v v
1
1
0 0
1
1
0 0
0
0
v v
0
0
0 0
0
0
0 0
0
*0
*0 0
*0
0
0 *0
0
0
v v
1
1
v v
1
1
0 0
1
1
0 *0
|
|
0
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 34 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Solving 3-SAT
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
c
c
v ?
c
c
¬v ?
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
0 0
OK
*0
¬v
¬v
OK
OK
v v
OK
OK
0 0
OK
OK
0 0
OK
OK
1 1
0
0
¬v
¬v
c
c
v ?
c
c
0 0
c
c
0 0
c
c
1 1
c
c
0 0
c
c
1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v vc
c1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v v
c
c
1 1
c
c
0 0
*v
v
v v
*¬v
¬v
¬v
¬v
v
v
¬v
¬v
¬v
¬v
v v
v
v
0 0
¬v
¬v
0 0
v
v
1 1
¬v
¬v
1 1
v
*v
*0 0
¬v
*¬v
*1 1
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v¬v
¬v0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1¬v
*¬v*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v¬v
¬v0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
0
0
v v
*0
0
0 *0
*0
0
0 *0
0
0
1 *1
1
1
0 *0
*1
1
1 *1
0
0
v v
1
1
v v
0
*0
*1 1
1
*1
*0 0
0
0
0 0
1
1
0 0
0
0
1 1
1
1
1 1
OK
*0
v v
OK
OK
0 0
OK
OK
1 *1
1
1
¬v
¬v
|
|
v
|
|
¬v
|
|
0
|
|
1
1
1
0 0
1
1
v v
1
1
0 *0
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v0
00 0
0
0
1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 01
1¬
v
¬v
1
1
1 1
0
0
v v
0
0
0 00
00 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
0
1 *1
0
0v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 11
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
1 *1
0
0
1 *1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
*1
1
1 *1
1
*1
*0 0
OK
*0
v v
OK
OK
0 0
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
¬v
¬v
*0
0
0 *0
0
0
v v
0
*0
*1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
0 0
1
1
0 *0
1
1
¬v
¬v
1
1
v v
1
1
0 0
1
1
1 1
1
1
0 0
*1
1
1 *1
|
|
0
|
|
0
|
|
v
|
|
1
|
|
0
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 34 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Solving 3-SAT
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
c
c
v ?
c
c
¬v ?
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
0 0
OK
*0
¬v
¬v
OK
OK
v v
OK
OK
0 0
OK
OK
0 0
OK
OK
1 1
0
0
¬v
¬v
c
c
v ?
c
c
0 0
c
c
0 0
c
c
1 1
c
c
0 0
c
c
1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v vc
c1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v v
c
c
1 1
c
c
0 0
*v
v
v v
*¬v
¬v
¬v
¬v
v
v
¬v
¬v
¬v
¬v
v v
v
v
0 0
¬v
¬v
0 0
v
v
1 1
¬v
¬v
1 1
v
*v
*0 0
¬v
*¬v
*1 1
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v¬v
¬v0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1¬v
*¬v*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v¬v
¬v0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
0
0
v v
*0
0
0 *0
*0
0
0 *0
0
0
1 *1
1
1
0 *0
*1
1
1 *1
0
0
v v
1
1
v v
0
*0
*1 1
1
*1
*0 0
0
0
0 0
1
1
0 0
0
0
1 1
1
1
1 1
OK
*0
v v
OK
OK
0 0
OK
OK
1 *1
1
1
¬v
¬v
|
|
v
|
|
¬v
|
|
0
|
|
1
c
| ||
OK
|| |
v
| |
¬v
| |
0
| |
1
| |
v
|| ||
¬v
|| ||
0
|| ||
1
|| ||
*1
|| ||
1
1
0 0
1
1
v v
1
1
0 *0
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v0
00 0
0
0
1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 01
1¬
v
¬v
1
1
1 1
0
0
v v
0
0
0 00
00 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
0
1 *1
0
0v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 11
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
1 *1
0
0
1 *1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
*1
1
1 *1
1
*1
*0 0
OK
*0
v v
OK
OK
0 0
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
¬v
¬v
*0
0
0 *0
0
0
v v
0
*0
*1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
0 0
1
1
0 *0
1
1
¬v
¬v
1
1
v v
1
1
0 0
1
1
1 1
1
1
0 0
*1
1
1 *1
|
|
0
|
|
0
|
|
v
|
|
1
|
|
0
c
| ||c
| ||
0
|| ||
1|| ||
0
| |
0
| |
¬v
| |
OK
|| |
¬v
|| ||
0
|| ||
1
|| ||
¬v
| |
0
| |
0
| |
¬v
| |
1
| |
OK
|| |
v
|| ||
0
|| ||
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 34 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Solving 3-SAT
(x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ ¬x1 ∨ ¬x0) ∧ (¬x2 ∨ x1 ∨ x0)
?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
c
c
v ?
c
c
¬v ?
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
0 0
OK
*0
¬v
¬v
OK
OK
v v
OK
OK
0 0
OK
OK
0 0
OK
OK
1 1
0
0
¬v
¬v
c
c
v ?
c
c
0 0
c
c
0 0
c
c
1 1
c
c
0 0
c
c
1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v vc
c1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v v
c
c
1 1
c
c
0 0
*v
v
v v
*¬v
¬v
¬v
¬v
v
v
¬v
¬v
¬v
¬v
v v
v
v
0 0
¬v
¬v
0 0
v
v
1 1
¬v
¬v
1 1
v
*v
*0 0
¬v
*¬v
*1 1
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v¬v
¬v0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1¬v
*¬v*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v¬v
¬v0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
0
0
v v
*0
0
0 *0
*0
0
0 *0
0
0
1 *1
1
1
0 *0
*1
1
1 *1
0
0
v v
1
1
v v
0
*0
*1 1
1
*1
*0 0
0
0
0 0
1
1
0 0
0
0
1 1
1
1
1 1
OK
*0
v v
OK
OK
0 0
OK
OK
1 *1
1
1
¬v
¬v
|
|
v
|
|
¬v
|
|
0
|
|
1
c
| ||
OK
|| |
v
| |
¬v
| |
0
| |
1
| |
|
||
v
|| ||
¬v
|| ||
0
|| ||
1
|| ||
*1
|| ||
1
1
0 0
1
1
v v
1
1
0 *0
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v0
00 0
0
0
1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 01
1¬
v
¬v
1
1
1 1
0
0
v v
0
0
0 00
00 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
0
1 *1
0
0v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 11
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
1 *1
0
0
1 *1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
*1
1
1 *1
1
*1
*0 0
OK
*0
v v
OK
OK
0 0
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
¬v
¬v
*0
0
0 *0
0
0
v v
0
*0
*1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
0 0
1
1
0 *0
1
1
¬v
¬v
1
1
v v
1
1
0 0
1
1
1 1
1
1
0 0
*1
1
1 *1
|
|
0
|
|
0
|
|
v
|
|
1
|
|
0
c
| ||c
| ||
0
|| ||
1|| ||
0
| |
0
| |
¬v
| |
OK
|| |
¬v
|| ||
0
|| ||
1
|| ||
¬v
| |
0
| |
0
| |
¬v
| |
1
| |
OK
|| |
v
|| ||
0
|| ||
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 34 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Θ(1)-Tileset 3-SAT Solution [Bru08c]
64 tile types
Probability of success ≥(12
)n
c
c
v ?
c
c
¬v ?
c
c
0 0
c
c
1 1
*v
v
v v
*¬v
¬v
¬v ¬v
v
v
¬v ¬v
¬v
¬v
v v
v
v
0 0
¬v
¬v0 0
v
v1 1
¬v
¬v
1 1
0
*0
*0 0
1
*1
*1 1
*0
0
0 *00
01 *1
1
10 *0
*1
1
1 *10
0
v v
1
1
v v
0
*0
*1 1
1
*1
*0 0
v
*v
*0 0
¬v
*¬v
*0 0
v
*v
*1 1
¬v
*¬v
*1 1
0
0
0 0
1
1
0 0
0
0
1 1
1
1
1 1
c
c
v v
c
c
¬v ¬v
OK
*0
v v
OK
*1
v v
OK
*0
¬v ¬v
OK
*1
¬v ¬v
OK
OK
v v
OK
OK
¬v ¬v
OK
OK
0 0
OK
OK
1 1
OK
OK
0 *0
OK
OK
1 *1
0
0
¬v ¬v
1
1
¬v ¬v
|
|
v
|
|
¬v
|
|
0
|
|
1
c
| ||
OK
|| |
v
| |¬v
| |
*0
|| |
*1
|| |
0
| |
1
| |
|
||
v|| ||
¬v
|| ||
0
|| ||
1
|| ||
*0
|| ||
*1
|| ||OK
|| ||
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 35 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Improving the 3-SAT Algorithm Runtime
Some algorithms reduce the base of the exponent
Fastest known: O?(1.3333n) [Woe03].
An O?(1.8393n) algorithm [Woe03]
Suppose φ = (x1 ∨ ¬x2 ∨ x3) · · · .There are 3 relevant possibilities: either,
first literal is TRUE , or
first literal is FALSE and second literal is TRUE , or
first two literals are FALSE and third literal is TRUE .
T (n,m) = c+
3∑i=1
T (n− i,m− 1) = O?(1.8393nm).
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 36 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Can Tiles Implement More-Efficient Algorithms?
O?(1.8393n) 3-SAT Solution [Bru09]
*
*
*
*
*
*
*
*
***
c 0100 0 0 01 1 1 1 1cc 0001 1 1x x x x x¬x ¬x ¬x¬x
**
*
*
*
*
*
*
*
*
*
**
*
*
*
*
*
*
*
*
*
|Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 37 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Can Tiles Implement More-Efficient Algorithms?
O?(1.8393n) 3-SAT Solution [Bru09]
*
*
*
*
*
*
*
*
*
¬x*
¬x *
t
t
0 0
*
t
x x
*
*
1 1
*
*
0 0
@
@
@ #
@
@
@ #
**
c 0100 0 0 01 1 1 1 1cc 0001 1 1x x x x x¬x ¬x ¬x¬x
x*
x *
x*
x *
0
0
x x
0
0
x x
0
0
x x
¬x*
¬x*
x x
x*
x*
x x
1
1
x x
0
0 *
0
0 *
0
0 *
0
0 *
0
0
0:
0:
x*
x
1:1
0:
1
1
1:1
1:1
0
0
1:1
1:1
0
0
2:1
2
2:1
2
ft
c
@ 2:1
2
x*
x
0:
**
¬x*
¬x
2:1
2
1:1
1
1
2:1
2
2:1
2
0
0
0:
0:
0
0
x x
1
1
x x
0
0
0 0
0
0
0 0
0
0
0 0
x*
x*
0 0
¬x*
¬x*
0 0
1
1
0 0
1
1
0 0
0
0
0 0
0
0
0 0
x*
x*
0 0
¬x*
¬x*
0 0
1
1
0 0
1
1
0 0
0
0
x x
0
0
x x
¬x*
¬x*
x x
1
1
x x
1
1
x x
1
1 *
1
1 *
0
0
1 1
0
0
1 1
1
1
1 1
¬x*
¬x*
1 1
0
0
0 0
¬x*
¬x*
0 0
1
1
0 0
0
0
¬x
¬x
1
1
¬x
¬x
1
1
0 0
t
ft
¬x x
t
t
0 0
@
*
@ ¬x
x
x
@ @
x
x
@ @
x
x
@ @
¬x
¬x
@ @
¬x
¬x
@ @
¬x
¬x
@ @
0
0
@ @
0
0
@ @
0
0@ @
0
0
@ @
0
0
@ @
1
1
@ @
1
1
@ @
1
1
@ @
1
1
@ @
1
1
@ @
1
1
@ @
1
1
@ @
c
c
@ @
c
c
@ @
¬xt
¬x
¬x
¬x
1
1
¬x
¬x
0
0
¬x
¬x
xf
x
¬x
¬x
0
0
¬x
¬x
1
1
¬x
¬x
1
1
¬x
¬x
1
1
¬x
¬x
1
1
¬x
¬x
1
1
¬x
¬x
1
1
¬x
¬x
0
0
¬x
¬x
0
0
¬x
¬x
0
0
¬x
¬x
c
c
¬x
¬x
c
c
¬x
¬x
xf
x
¬x
¬x
xf
x
¬x
¬x
¬xt
¬x¬
x
¬x
¬xt
¬x
¬x
¬x
¬x
¬xt
0t 0
¬x
¬xt
0t 0
¬x
¬xt
0t 0
1
1
0 0t
0
0
0 0
1
1
0 0t
0t
0
0 0t
x
xf
0f 0
x
xf
0f 0
x
xf
0f 0
1
1
0 0
1
1
0 0f
1
1
0 0
c
c
0 0
c
c
0 0
0f
0
0 0f
0f
0
0 0f
0
00 0
1
1
0 0
1
1
0 0
¬x
¬x
0 0
1
1
0 0
0
0
0 0
x
x
0 0
0
0f
0f 0
1
1
0 0f
x
x
0 0
1
1
0 0
1
1
0 0
c
c
0 0
x
x
0 0
0
0f0
f 00f
0
0 0f
¬x
¬x
0 0
0
0t
0t 0
1
1
0 0t
¬x
¬x
0 0
1
1
0 0
1
1
0 0
c
c
0 0
¬xf
¬x
x x
1
1
x x
0
0
x x
xt
x
x x
xt
x
x x
xt
xx x
¬xf
¬x
x x
¬xf
¬x
x x
c
c
x x
0
0
x x
0
0
x x
0
0
x x
1
1
x x
1
1
x x
1
1
x x
1
1
x x
1
1
x x
1
1
x x
c
c
x x
F
0f
x x
¬x
¬xf
1f 1
¬x
¬xf
1f 1
¬x
¬xf
1f 1
1f
1
1 1f
1f
1
1 1f
x
xt
1t 1
x
xt
1t 1
x
xt
1t 1
1t
1
1 1t
0
0
1 1
0
0
1 1t
1
1
1 1
1
1
1 1
c
c1 1
c
c
1 1
0
0
1 1t
0
0
1 1f
1
1
1 1
1
1
1 1
¬x
¬x
0 0
1
1f
0f 0
1
1f
0f 0
1
1t
0t 0
0f
0
0 0f
x
x
0 0
0
0
0 0
1
1
0 0
x
x
0 0
1
10 0t
c
c
0 0
c
c
0 0
x
x
0 0
0
0
0 0
¬x
¬x
0 0
0
0
0 0
1
1
0 0
¬x
¬x
0 0
1
1
0 0f
¬x
¬x
@ @
¬x
¬x
@ @
¬x
¬x
@ @
x
x
@ @
x
x
@ @
x
x
@ @
c
c
@ @
c
c
@ @
1
1
@ @
1
1
@ @
1
1@ @
1
1
@ @
1
1
@ @
1
1
@ @
1
1
@ @
0
0
@ @
0
0
@ @
0
0
@ @
F
F
@ @
F
0f
@ @
F
F
@ @
¬x
¬x
@ @
¬x
¬x
@ @
x
x
@ @
x
x@ @
x
x
@ @
c
c
@ @
c
c
@ @
1
1
@ @
1
1
@ @
1
1
@ @
1
1
@ @
1
1
@ @
1
1
@ @
0
0
@ @
0
0
@ @
0
0
@ @
F
F
@ @
¬x
¬x
@ @
1
1
@ @
F
F
@ @
¬x
¬x
@ @
¬x
¬x
@ @
x
x
@ @
x
x
@ @
x
x
@ @
c
c
@ @
c
c
@ @
1
1@ @
1
1
@ @
1
1
@ @
1
1
@ @
1
1
@ @
1
1
@ @
0
0
@ @
0
0
@ @
0
0
@ @
F
F
@ @
¬x
¬x
@ @
1
1
@ @
**
*
*
*
*
*
*
*
*
*
**
*
*
*
*
*
*
*
*
*
¬x*
¬x
0:
**
1
1
0:
0:
x*
x
1:
0:*
0
01
:
1:
1
1
1:
1:
x*
x
2:2
1:
1
1
2:2
2:2
bft
c
@ 2:2
0
#f
0:*
0:
1
1
2:2
2:2
*
t
x x
t
ft
¬x x
*
*
1 1
t
t
0 0
t
t
1 1
ft
bft
@ ¬x
ft
ft
0 0
ft
ft
1 1
0
0 *
1
1 *
x*
x *
¬x*
¬x *
x*
x *
0
0 *
1
1 *
1
1 *
1
1 *
1
1
¬x
¬x
1
1
¬x
¬x
1
1
¬x
¬x
1
1
¬x
¬x
x*
x*
¬x
¬x
x*
x*¬
x
¬x
0
0
¬x
¬x
0
0
¬x
¬x
0
01 1
0
0
1 1
1
1
1 1
1
1
1 1
1
1
1 1
x*
x*
1 1
x*
x*
1 1
x*
x*
0 0
0
0
0 0
x*
x*
0 0
1
1
0 0
1
1
0 0
1
1
0 0
0
0
x x
1
1
x x
1
1
x x
1
1
x x
x*
x*
x x
x*
x*
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
1 1
1
1
1 1
x*
x*
1 1
1
1
x x
1
1
x x
1
1
1 1
*
*
1 1
0
0
@ @
1
1
@ @
x
x
@ @
¬x
¬x
@ @
c
c
@ @
F
F
@ @
0
0
@ @
1
1
@ @
1
1
@ @
¬x
¬x
@ @
0
0
@ @
1
1
@ @
x
x
@ @
¬x
¬x
@ @
c
c
@ @
F
F
@ @
0
0
@ @
1
1
@ @
1
1
@ @
¬x
¬x
@ @
x
x
1 1
¬x
¬x
1 1
¬x
¬x
1 1
1
1
1 1
1
1
1 1
1
1
1 1
0
0
1 1
0
0
1 1
c
c
1 1
x
x
0 0
¬x
¬x
0 0
¬x
¬x
0 0
0
0
0 0
0
0
0 0
1
1
0 0
1
1
0 0
1
1
0 0
c
c
0 0
xf
x
¬x
¬x
0
0
¬x
¬x
0
0
¬x
¬x
F
F
¬x
¬x
¬xt
¬x
¬x
¬x
1
1
¬x
¬x
1
1
¬x
¬x
1
1
¬x
¬x
c
c
¬x
¬x
¬xt
¬x
¬x
¬x
x
xf
0f 0
0f
0
0 0f
¬x
¬xt
0t 0
0t
0
0 0t
1
1
0 0
¬x
¬xt
0t 0
1
1
0 0t
1
1
0 0
c
c
0 0
x
x
1 1
0
0f
1f 1
¬x
¬x
1 1
0
0t
1t 1
1t
1
1 1t
¬x
¬x
1 1
1
1
1 1
1
1
1 1
c
c
1 1
xt
x
x x
0
0
x x
F
F
x x
¬xf
¬x
x x
¬xf
¬x
x x
0
0
x x
1
1
x x
1
1
x x
c
c
x x
T
1t
x x
x
xt
1t 1
0
0
1 1t
¬x
¬xf
1f 1
0
0
1 1f
¬x
¬xf
1f 1
1f
1
1 1f
1
1
1 1
c
c
1 1
x
x
1 1
0
0
1 1
¬x
¬x
1 1
¬x
¬x
1 1
0
0
1 1
1
1f
1f 1
1f
1
1 1f
c
c
1 1
0
0 *
x*
x *
¬x*
¬x *
0
0
x x
0
0
x x
0
0
x x
¬x*
¬x*
x x
0
0 *
0
0
0 0
0
0
0 0
¬x*
¬x*
0 0
¬x*
¬x*
0 0
0
0
0 0
0
0 *
0
0
¬x
¬x
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #
@
@
@ #|
@*
|
F
F
0 0#
F
F
1 1#
T
T
1 1#
F
F
1 1#
F
F
1 1#
F
F
1 1#
F
F
1 1#
F
F
0 0#
F
F
0 0#
T
T
1 1#
x*
x
0:
**
0
0
0:
0:
0
#f
0:*
0:
¬x*
¬x
1:
0:*
0
0
1:
1:
@
#
T T
@
c
@ T
@
#
T T
@
#
T T
@
#t
T ::
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 37 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
O?(1.8393n) 3-SAT Solution [Bru09]
150 tile types
Probability of success ≥(
11.8393
)n
F
c
F 3:
t
c
@ 3:1
bt
c
@ 3:2
bbt
c
@ 2:
t
c
@ 3:1
2
ft
c
@ 3:1
2
t
c
@ 2:1
fbt
c
@ 2:1
bt
c
@ 2:2
bft
c
@ 2:2
t
c
@ 2:1
2
ft
c
@ 2:1
2
fft
c
@ 2:1
2
@
c@ T
(b) SELECT
x*
x
0:
**
¬x*
¬x
0:
**
0
0
0:
0:
1
1
0:
0:
0
#f
0:*
0:
x*
x
1:1
0:
¬x*
¬x
1:1
0:
x*
x
1:
0:*
¬x*
¬x
1:
0:*
0
0
1:
1:
1
1
1:
1:
0
0
1:1
1:1
1
1
1:1
1:1
0
#f
1:*
1:
0
#f
1:1
*
1:1
x*
x
2:2
1:
¬x*
¬x
2:2
1:
x*
x
2:1
2
1:1
¬x*
¬x
2:1
2
1:1
x*
x
2:
1:*
¬x*
¬x
2:
1:*
¬x*
¬x
2:1
1:1
*
x*
x
2:1
1:1
*
0
0
2:
2:
1
1
2:
2:
0
0
2:1
2:1
1
1
2:1
2:1
0
0
2:2
2:2
1
1
2:2
2:2
0
0
2:1
2
2:1
21
12:1
2
2:1
2
0
#f3
:
2:
0
#f
3:1
2:1
0
#f
3:2
2:2
0
#f
3:1
2
2:1
2
@
#t
T ::
@
#
T T
(a) EXAM
(c) ROTATE
0
0 *
0
0
0 0
0
0
1 1
0
0
x x
0
0
¬x
¬x
1
1
0 0
1
1
1 1
1
1
x x
1
1
¬x
¬x
x*
x*
0 0
x*
x*
1 1
x*
x*
x x
x*
x*
¬x
¬x
¬x*
¬x*
0 0
¬x*
¬x*
1 1
¬x*
¬x*
x x
¬x*
¬x*
¬x
¬x
1
1 *
x*
x *
¬x*
¬x *
@
@
@ #
xt
x
x x
¬xf
¬x
x x
¬xt
¬x
¬x
¬x
xf
x
¬x
¬x
x
xt
0t 0
x
xt1
t 1
¬x
¬xt
0t 0
¬x
¬xt
1t 1
0t
0
0 0t
1t
1
1 1t
1
1
0 0t
0
01 1t
c
c
0 0
c
c
1 1
c
c
x x
c
c
¬x
¬x
x
xf
0f 0
x
xf
1f 1
¬x
¬xf
0f 0
¬x
¬xf
1f 1
0f
0
0 0f
1f
1
1 1f
1
1
0 0f
0
0
1 1f
F
0f
x x
F
1f
x x
F
0f
¬x
¬x
F
1f
¬x
¬x
F
F
0 0#
F
F
1 1#
F
F
x x
F
F
¬x
¬x
T
0t
x x
T
1t
x x
T
0t
¬x
¬x
T
1t
¬x
¬x
T
T
0 0#
T
T
1 1#
T
T
x x
T
T
¬x
¬x
0
0t
0t 0
0
0t
1t 1
1
1t
0t 0
1
1t
1t 1
0
0f0
f 0
0
0f
1f 1
1
1f
0f 0
1
1f1
f 1
0
0
0 0
0
0
1 1
0
0
x x
0
0
¬x
¬x
1
1
0 0
1
1
1 1
1
1
x x
1
1
¬x
¬x
x
x
0 0
x
x
1 1
¬x
¬x
0 0
¬x
¬x
1 1
@
@
@ #
0
0
@ @
1
1
@ @
x
x
@ @
¬x
¬x
@ @
c
c
@ @
T
T
@ @
@
#t
T ::
@
#
T T
@
c
@ T
F
F
@ @
F
0f
@ @
F
1f
@ @
(d) SIMPLIFY
*
t
x x
*
t
¬x
¬x
@
@
@ #
t
bt
@ x
t
bt
@ ¬x
t
ft
¬x x
t
ft
x ¬x
bt
bbt
@ x
0
0
@ @
1
1
@ @
x
x
@ @
¬x
¬x
@ @
c
c
@ @
*
*
0 0
*
*
1 1
@
*
@ x
@
*
@ ¬x
t
t
0 0
t
t
1 1
bt
bbt
@ ¬x
bt
bt0 0
bt
bt
1 1bt
fbt
¬x x
bt
fbt
x ¬x
ft
fft
¬x x
ft
fft
x ¬x
ft
bft
@ x
ft
bft
@ ¬x
ft
ft
0 0ft
ft1 1
T
T
@ @
F
F
@ @
@
#t
T ::
@
#
T T
@
c
@ T
@*
|
(d) PREP
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 38 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Efficient Tile Systems
Add [Bru07]
Multiply [Bru07]
Factor [Bru08a]
Solve SubsetSum [Bru08b]
Solve k-SAT [Bru08c]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 39 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Outline
1 Why Nature?
2 Using Nature to Compute
3 Tiles
4 Tile SoftwareLeveraging Software Architecture to Build Tile-Inspired SoftwareProblem Statement: Private ComputationTile Architectural StyleTile Style Analysis
5 Conclusions
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 40 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Software Architecture
“Software architecture: the set ofprincipal design decisions madeabout a system.” [TMD09]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 41 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Converting the Model to an Architecture
?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
c
c
v ?
c
c
¬v ?
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
0 0OK
*0¬
v
¬v
OK
OK
v v
OK
OK
0 0
OK
OK
0 0
OK
OK
1 10
0
¬v
¬v
c
cv ?
c
c
0 0
c
c
0 0
c
c
1 1
c
c
0 0
c
c
1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v v
c
c
1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v v
c
c
1 1
c
c
0 0
*v
v
v v
*¬v
¬v
¬v
¬v
v
v
¬v
¬v
¬v
¬v
v v
v
v
0 0
¬v
¬v
0 0
v
v
1 1
¬v
¬v
1 1
v
*v
*0 0
¬v
*¬v
*1 1
v
v0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
0
0
v v
*0
0
0 *0
*0
0
0 *00
0
1 *1
1
10 *0
*1
1
1 *1
0
0
v v
1
1
v v
0
*0
*1 1
1
*1
*0 0
0
0
0 0
1
1
0 0
0
01 1
1
1
1 1
OK
*0
v v
OK
OK
0 0
OK
OK
1 *11
1
¬v
¬v
|
|
v
|
|
¬v
|
|
0
|
|
1
c
| ||
OK
|| |
v
| |
¬v
| |
0
| |
1
| |
|
||
v
|| ||
¬v
|| ||
0
|| ||
1
|| ||
*1
|| ||
1
1
0 0
1
1
v v
1
1
0 *0
1
1
1 1
0
0v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 10
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
0
1 *1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
1 *1
0
0
1 *1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
*1
1
1 *1
1
*1
*0 0
OK
*0
v v
OK
OK
0 0
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
¬v
¬v
*0
0
0 *0
0
0
v v
0
*0
*1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
0 0
1
1
0 *0
1
1
¬v
¬v
1
1
v v
1
1
0 0
1
1
1 1
1
1
0 0
*1
1
1 *1
|
|
0
|
|
0
|
|
v
|
|
1
|
|
0
c
| ||
c
| ||
0
|| ||
1
|| ||
0
| |
0
| |
¬v
| |
OK
|| |
¬v
|| ||
0
|| ||
1
|| ||
¬v
| |
0
| |
0
| |
¬v
| |
1
| |
OK
|| |
v
|| ||
0
|| ||
Architectural Elements [MRMM02]
Components: tiles
Interfaces: side labels
Topology: 2-D grid
Behaviors: identifying nodes, recruiting attachments, replicating, andreporting the solution
Interaction: recruitment data exchange
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 42 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Computationally Intensive Problems
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 43 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Internet as a Computing Medium
Billion machines
Mostly idle
Insecure` `
`
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 44 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Distributed Computation
Computation on the Internet
SETI@home [KWA+96]Folding@Home [LSSP02]Rosetta@home [Ros07]
Grid Computing & Clouds
MapReduce [DG04]OrganicGrid [CB04]
Do not preserve privacy
sky
regi
on 1
, ban
ds 0
-100
sky r
egion
1, b
ands
100-
200
sky region 1, bands 200-300
sky region 1, bands 300-400sky region 1, bands 400-500
sky region 2, bands 0-100
sky region 2, bands 100-200
sky region 2, bands 200-300
sky region 3, bands 0-100
`
Client
`
Client
`
Client`
Client
`
Client
`
Client
`
Client
`
Client
`
Client
Server
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 45 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Example Scenario
Possible cancer cure
Find minimal-free-energyconfiguration
Keep amino acid sequenceprivate
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 46 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Tile Style Intuition?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
c
c
v ?
c
c
¬v ?
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
0 0
OK
*0
¬v
¬v
OK
OK
v v
OK
OK
0 0
OK
OK
0 0
OK
OK
1 1
0
0
¬v
¬v
c
c
v ?
c
c
0 0
c
c
0 0
c
c
1 1
c
c
0 0
c
c
1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0c
c0 0
c
c
v v
c
c
1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v v
c
c
1 1
c
c
0 0
*v
v
v v
*¬v
¬v
¬v
¬v
v
v
¬v
¬v
¬v
¬v
v v
v
v
0 0
¬v
¬v
0 0
v
v
1 1
¬v
¬v1 1
v
*v
*0 0
¬v
*¬v
*1 1
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1¬v
*¬v*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v¬v
¬v0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
0
0
v v
*0
0
0 *0
*0
0
0 *0
0
0
1 *1
1
1
0 *0
*1
1
1 *1
0
0
v v
1
1
v v
0
*0
*1 1
1
*1
*0 0
0
0
0 0
1
1
0 0
0
0
1 1
1
1
1 1
OK
*0
v v
OK
OK
0 0
OK
OK
1 *1
1
1
¬v
¬v
|
|
v
|
|
¬v
|
|
0
|
|
1
c
| ||
OK
|| |
v
| |
¬v
| |
0
| |
1
| |
|
||
v
|| ||
¬v
|| ||0
|| ||
1
|| ||
*1
|| ||
1
1
0 0
1
1
v v
1
1
0 *0
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 00
00 0
0
0
1 1
1
1
v v1
1v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 00
0¬
v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 00
00 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
1
1v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 10
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
0
1 *1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
1 *1
0
0
1 *1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
*1
1
1 *1
1
*1
*0 0
OK
*0
v v
OK
OK
0 0
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
¬v
¬v
*0
0
0 *0
0
0
v v
0
*0
*1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
0 0
1
1
0 *0
1
1
¬v
¬v
1
1
v v
1
1
0 0
1
1
1 1
1
1
0 0
*1
1
1 *1
|
|
0
|
|
0
|
|
v
|
|
1
|
|
0
c
| ||
c
| ||
0
|| ||
1
|| ||
0
| |
0
| |
¬v
| |
OK
|| |
¬v
|| ||
0
|| ||
1
|| ||
¬v
| |
0
| |
0
| |
¬v
| |
1
| |
OK
|| |
v
|| ||
0
|| ||
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 47 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Node Operations [BM07a]
Initiation (by the client)
Node Discovery
Replication
Recruitment
Initiation(Client)Initiation(Client)
Replication(All Nodes)Replication(All Nodes)
Recruitment(All Nodes)
Discovery(All Nodes)Discovery
(All Nodes)Solution(Client)
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 48 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Node Discovery
Each node can return a randomly-uniform node of each tile component type
Each node, for each tile type, keeps a list of 3 nodes that deploy that type
When queried, a node returns one of the 3 elements at random, and replacesits list with that nodes list of 3
Result: the algorithm returns a uniformly-random IP after only Θ(logN)requests [MR95]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 49 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Node Discovery
Each node can return a randomly-uniform node of each tile component type
Each node, for each tile type, keeps a list of 3 nodes that deploy that type
When queried, a node returns one of the 3 elements at random, and replacesits list with that nodes list of 3
Result: the algorithm returns a uniformly-random IP after only Θ(logN)requests [MR95]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 49 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Node Discovery
Each node can return a randomly-uniform node of each tile component type
Each node, for each tile type, keeps a list of 3 nodes that deploy that type
When queried, a node returns one of the 3 elements at random, and replacesits list with that nodes list of 3
Result: the algorithm returns a uniformly-random IP after only Θ(logN)requests [MR95]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 49 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Node Discovery
Each node can return a randomly-uniform node of each tile component type
Each node, for each tile type, keeps a list of 3 nodes that deploy that type
When queried, a node returns one of the 3 elements at random, and replacesits list with that nodes list of 3
Result: the algorithm returns a uniformly-random IP after only Θ(logN)requests [MR95]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 49 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Node Discovery
Each node can return a randomly-uniform node of each tile component type
Each node, for each tile type, keeps a list of 3 nodes that deploy that type
When queried, a node returns one of the 3 elements at random, and replacesits list with that nodes list of 3
Result: the algorithm returns a uniformly-random IP after only Θ(logN)requests [MR95]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 49 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Node Discovery
Each node can return a randomly-uniform node of each tile component type
Each node, for each tile type, keeps a list of 3 nodes that deploy that type
When queried, a node returns one of the 3 elements at random, and replacesits list with that nodes list of 3
Result: the algorithm returns a uniformly-random IP after only Θ(logN)requests [MR95]
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 49 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Privacy Preservation
Data1 Each node knows very little
2 It is hard to control the entire input
Algorithm3 One tile type implies nothing
4 It is hard to learn all the tile types
5 Knowing the tile types does not reveal the algorithm
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 50 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Data: Each Node Knows Very Little?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
c
c
v ?
c
c
¬v ?
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
0 0
OK
*0
¬v
¬v
OK
OK
v v
OK
OK
0 0
OK
OK
0 0
OK
OK
1 1
0
0
¬v
¬v
c
c
v ?
c
c
0 0
c
c
0 0
c
c
1 1
c
c
0 0
c
c
1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v v
c
c
1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v v
c
c
1 1
c
c
0 0
*v
v
v v
*¬v
¬v
¬v
¬v
v
v
¬v
¬v
¬v
¬v
v v
v
v
0 0
¬v
¬v
0 0
v
v
1 1
¬v
¬v
1 1
v
*v
*0 0
¬v
*¬v
*1 1
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
0
0
v v
*0
0
0 *0
*0
0
0 *0
0
0
1 *1
1
1
0 *0
*1
1
1 *1
0
0
v v
1
1
v v
0
*0
*1 1
1
*1
*0 0
0
0
0 0
1
1
0 0
0
0
1 1
1
1
1 1
OK
*0
v v
OK
OK
0 0
OK
OK
1 *1
1
1
¬v
¬v
|
|
v
|
|
¬v
|
|
0
|
|
1
c
| ||
OK
|| |
v
| |
¬v
| |
0
| |
1
| |
|
||
v
|| ||
¬v
|| ||
0
|| ||
1
|| ||
*1
|| ||
1
1
0 0
1
1
v v
1
1
0 *0
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
0
1 *1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
1 *1
0
0
1 *1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
*1
1
1 *1
1
*1
*0 0
OK
*0
v v
OK
OK
0 0
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
¬v
¬v
*0
0
0 *0
0
0
v v
0
*0
*1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
0 0
1
1
0 *0
1
1
¬v
¬v
1
1
v v
1
1
0 0
1
1
1 1
1
1
0 0
*1
1
1 *1
|
|
0
|
|
0
|
|
v
|
|
1
|
|
0
c
| ||
c
| ||
0
|| ||
1
|| ||
0
| |
0
| |
¬v
| |
OK
|| |
¬v
|| ||
0
|| ||
1
|| ||
¬v
| |
0
| |
0
| |
¬v
| |
1
| |
OK
|| |
v
|| ||
0
|| ||
Less than 1 bit of information per tile
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 51 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Data: It Is Hard to Control the Entire Input
1− (1− cn)s
n — bits in input c — compromised fraction s — number of seeds
TeraGrid (100, 000 machines)
17-variable 100-clause 3-SAT problem
Compromised Fraction Confidence Level
18 1− 10−10
14 1− 10−5
13 1− 10−3
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 52 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Fault-Tolerant Tile Style [BM07b]
Tile systems can be designed to be tolerant to misbehaving tiles
For example, [WB03]
a
c
bd
a1
11'
11d1
11'
c121d2
21'
c2
b221
a2
21'b111 a1
11'
11d1
11'
c1
21d2
21'
c2
b221
a2
21'
b111
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 53 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Provably Correctable Errors
Failing tiles
Misbehaving tiles
Byzantine tiles
Service attacks
Privacy attacks
. . . probably many more
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 54 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Tile Style Hypotheses
1 Speed ∝ network size
2 Robust to network delay
3 Can solve real-world-sized problems
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 55 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Experimental Setup
Mahjong: tile style implementation
Java, 3K LoCLeverages Prism-MW [MMRM05]Download: http://csse.usc.edu/~ybrun/Mahjong
Networks
11-node private cluster (P4 1.5GHz, 512MiB, WinXP/2000)186-node USC HPCC cluster [Hig] (P4 Xeon 3GHz, Linux)100-node PlanetLab [PACR03] (global, varying speeds and resources)
Sample problems:A : 5-number 21-bit SubsetSumB : 11-number 28-bit SubsetSumC : 20-variable 20-clause 3-SATD : 33-variable 100-clause 3-SAT
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 56 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Experimental Setup
Mahjong: tile style implementation
Java, 3K LoCLeverages Prism-MW [MMRM05]Download: http://csse.usc.edu/~ybrun/Mahjong
Networks
11-node private cluster (P4 1.5GHz, 512MiB, WinXP/2000)186-node USC HPCC cluster [Hig] (P4 Xeon 3GHz, Linux)100-node PlanetLab [PACR03] (global, varying speeds and resources)
Sample problems:A : 5-number 21-bit SubsetSumB : 11-number 28-bit SubsetSumC : 20-variable 20-clause 3-SATD : 33-variable 100-clause 3-SAT
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 56 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Experimental Setup
Mahjong: tile style implementation
Java, 3K LoCLeverages Prism-MW [MMRM05]Download: http://csse.usc.edu/~ybrun/Mahjong
Networks
11-node private cluster (P4 1.5GHz, 512MiB, WinXP/2000)186-node USC HPCC cluster [Hig] (P4 Xeon 3GHz, Linux)100-node PlanetLab [PACR03] (global, varying speeds and resources)
Sample problems:A : 5-number 21-bit SubsetSumB : 11-number 28-bit SubsetSumC : 20-variable 20-clause 3-SATD : 33-variable 100-clause 3-SAT
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 56 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Scalability: Speed ∝ Network Size
Network & Problem # of Nodes Execution Time Speed-up Ratio
Private Cluster 5 43.2 sec.A 10 22.9 sec. 1.89
HPCC 93 220 min.C 186 116 min. 1.90
PlanetLab 50 9.2 min.B 100 4.8 min. 1.92
Simjong125,000 8.7 hours250,000 4.5 hours 1.93
D500,000 2.1 hours 2.14
1,000,000 64 min. 1.97
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 57 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Robustness to Network Delay
Problem # of Nodes Network Delay Execution Time
Mahjong
A 11Private Cluster 20.1 sec.
HPCC 19.3 sec.PlanetLab 18.5 sec.
B 11Private Cluster 41.6 min.
HPCC 41.2 min.PlanetLab 43.9 min.
Simjong
D 1,000,000
0ms 65 min.10ms 57 min.100ms 64 min.500ms 60 min.
Gaussian 68 min.Distance-based 59 min.
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 58 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Efficiency: Solving Real-World-Sized Problems
10 103 105 107 109
second
minute
hourday
monthyear
centurymillenium
102 millenia
104 millenia
Network nodes
40-variables
50-variables
30-variables
# of NodesExecution Time
Simjong Theoretical Calculation
125,000 8.7 hours 9.1 hours
250,000 4.5 hours 4.5 hours
500,000 2.1 hours 2.3 hours
1,000,000 64 min 68 min.
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 59 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
Tile Style
Developed self-assemblingsystems to solve complexcomputational problems
?
cv0v100 0 0 01 1 1 1 1 ¬vc¬v ¬v ¬vc¬v ¬vv|
11
00
??
||0
0
0 0 0 0 0 0
c
c
v ?
c
c
¬v ?
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
0 0
OK
*0
¬v
¬v
OK
OK
v v
OK
OK
0 0
OK
OK
0 0
OK
OK
1 1
0
0
¬v
¬v
c
c
v ?
c
c
0 0
c
c
0 0
c
c
1 1
c
c
0 0
c
c
1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v v
c
c
1 1
c
c
0 0
c
c
0 0
c
c
1 1
c
c
v v
c
c
¬v
¬v
c
c
0 0
c
c
0 0
c
c
v v
c
c
1 1
c
c
0 0
*v
v
v v
*¬v
¬v
¬v
¬v
v
v
¬v
¬v
¬v
¬v
v v
v
v
0 0
¬v
¬v
0 0
v
v
1 1
¬v
¬v
1 1
v
*v
*0 0
¬v
*¬v
*1 1
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
*v
v
v v
v
v
¬v
¬v
v
v
0 0
v
v
1 1
v
*v
*0 0
v
v
0 0
*v
v
v v
v
*v
*0 0
v
v
1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0¬v
¬v1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0¬v
¬v0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1¬v
¬v0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
*¬v
¬v
¬v
¬v
¬v
¬v
v v
¬v
¬v
0 0
¬v
¬v
1 1
¬v
*¬v
*1 1
¬v
¬v
0 0
¬v
¬v
0 0
¬v
¬v
v v
¬v
¬v
0 0
0
0
v v
*0
0
0 *0
*0
0
0 *0
0
0
1 *1
1
1
0 *0
*1
11 *1
0
0
v v
1
1
v v
0
*0
*1 1
1
*1
*0 0
0
0
0 0
1
1
0 0
0
0
1 1
1
1
1 1
OK
*0
v v
OK
OK
0 0
OK
OK
1 *1
1
1
¬v
¬v
|
|
v
|
|
¬v
|
|
0
|
|
1
c
| ||
OK
|| |
v
| |
¬v
| |0
| |
1
| |
|
||
v
|| ||
¬v
|| ||
0
|| ||
1
|| ||
*1
|| ||
1
1
0 0
1
1
v v
1
1
0 *0
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 00
00 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 00
0¬
v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
0
1 *1
0
0
v v0
00 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
1
1v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
1
1
1 1
0
0
1 *1
0
0
1 *1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
0 0
0
0
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
v v
0
0
0 0
0
0
1 1
0
0
0 0
0
0
1 1
*1
1
1 *1
1
*1
*0 0
OK
*0
v v
OK
OK
0 0
1
1
v v
1
1
v v
1
1
0 0
1
1
0 0
1
1
0 0
1
1
¬v
¬v
1
1
1 1
0
0
v v
0
0
0 0
0
0
0 0
0
0
¬v
¬v
0
0
1 1
*0
0
0 *0
OK
OK
1 1
0
*0
*0 0
*0
0
0 *0
0
0
v v
0
0
¬v
¬v
*0
0
0 *0
0
0
v v
0
*0
*1 1
0
0
0 0
0
0
1 1
1
1
v v
1
1
0 0
1
1
0 *0
1
1
¬v
¬v
1
1
v v
1
1
0 0
1
1
1 1
1
1
0 0
*1
1
1 *1
|
|
0
|
|
0
|
|
v
|
|
1
|
|
0
c| ||
c
| ||
0
|| ||
1
|| ||
0
| |
0
| |
¬v
| |
OK
|| |
¬v
|| ||
0
|| ||
1
|| ||
¬v
| |
0
| |
0
| |
¬v
| |
1
| |
OK
|| |
v
|| ||
0
|| ||
Designed the tile architecturalstyle for deploying tile systemson large networks
Initiation(Client)Initiation(Client)
Replication(All Nodes)Replication(All Nodes)
Recruitment(All Nodes)
Discovery(All Nodes)Discovery
(All Nodes)Solution(Client)
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 60 / 62
Why Nature? Nature Computes Tiles Tile Software Conclusions
The Big Picture
Nature
Bring forward novel, well-tested, well-scaling, robust mechanisms
Present outside-the-box solutions
Software Architecture
Facilitate translation of a nature-inspired model to software
Aid design, implementation, and evaluation
Yuriy Brun ([email protected]) From Nature to Software CSEP 504 Winter 2010 61 / 62
Software Architecture IIILeveraging Nature to Build Better Systems
Yuriy Brun
http://www.cs.washington.edu/homes/brun/
Harold Abelson, Don Allen, Daniel Coore, Chris Hanson, George Homsy, Thomas F. Knight, Jr., Radhika Nagpal, Erik
Rauch, Gerald Jay Sussman, and Ron Weiss.Amorphous computing.Communications of the ACM, 43(5):74–82, May 2000.
Leonard Adleman, Qi Cheng, Ahish Goel, Ming-Deh Huang, and Hal Wasserman.
Linear self-assemblies: Equilibria, entropy, and convergence rates.In Proceedings of the 6th International Conference on Difference Equations and Applications (ICDEA01), Augsburg,Germany, June 2001.
Leonard Adleman, Qi Cheng, Ashish Goel, Ming-Deh Huang, David Kempe, Pablo Moisset de Espanes, and Paul W. K.
Rothemund.Combinatorial optimization problems in self-assembly.In Proceedings of the 34th Annual ACM Symposium on Theory of Computing (STOC02), pages 23–32, Montreal,Quebec, Canada, May 2002.
Leonard M. Adleman.
An abstract theory of computer viruses.In Proceedings on Advances in Cryptology (CRYPTO88), pages 354–374, Santa Barbara, CA, USA, 1990.
Leonard Adleman.
Molecular computation of solutions to combinatorial problems.Science, 266:1021–1024, 1994.
Leonard M. Adleman.
Computing with DNA.Scientific American Magazine, pages 54–61, August 1998.
Leonard Adleman, Ashish Goel, Ming-Deh Huang, and Pablo Moisset de Espanes.
Running time and program size for self-assembled squares.In Proceedings of the 34th Annual ACM Symposium on Theory of Computing (STOC02), pages 740–748, Montreal,Quebec, Canada, May 2002.
Leonard M. Adleman and David Wofsy.
T-cell homeostasis: implications in HIV infection.Journal of Acquired Immune Deficiency Syndromes, 6(2):133–152, February 1993.
Ravinderjit Braich, Nickolas Chelyapov, Cliff R. Johnson, Paul W. K. Rothemund, and Leonard Adleman.
Solution of a 20-variable 3-SAT problem on a DNA computer.Science, 296(5567):499–502, 2002.
Yuriy Brun and Manoj Gopalkrishnan.
Toward in vivo disease diagnosis and treatment using DNA.In Proceedings of the 2006 International Conference on Bioinformatics & Computational Biology (BIOCOMP06), pages182–186, Las Vegas, NV, USA, June 2006.
Yaakov Benenson, Binyamin Gil, Uri Ben-Dor, Rivka Adar, and Ehud Shapiro.
An autonomous molecular computer for logical control of gene expression.Nature, 429:423–429, 2004.
Yuriy Brun and Nenad Medvidovic.
An architectural style for solving computationally intensive problems on large networks.In Proceedings of Software Engineering for Adaptive and Self-Managing Systems (SEAMS07), Minneapolis, MN, USA,May 2007.
Yuriy Brun and Nenad Medvidovic.
Fault and adversary tolerance as an emergent property of distributed systems’ software architectures.In Proceedings of the 2nd International Workshop on Engineering Fault Tolerant Systems (EFTS07), pages 38–43,Dubrovnik, Croatia, September 2007.
Yuriy Brun.
Arithmetic computation in the tile assembly model: Addition and multiplication.Theoretical Computer Science, 378(1):17–31, June 2007.
Yuriy Brun.
Nondeterministic polynomial time factoring in the tile assembly model.Theoretical Computer Science, 395(1):3–23, April 2008.
A previous version appeared as a Center for Software Engineering, University of Southern California technical reportUSC-CSSE-2007-707.
Yuriy Brun.
Solving NP-complete problems in the tile assembly model.Theoretical Computer Science, 395(1):31–46, April 2008.A previous version appeared as a Center for Software Engineering, University of Southern California technical reportUSC-CSSE-2007-703.
Yuriy Brun.
Solving satisfiability in the tile assembly model with a constant-size tileset.Journal of Algorithms, 63(4):151–166, 2008.A previous version appeared as a Center for Software Engineering, University of Southern California technical reportUSC-CSSE-2008-801.
Yuriy Brun.
Improving efficiency of 3-sat-solving tile systems.In Submission, 2009.
Robert Barish, Paul W. K. Rothemund, and Erik Winfree.
Two computational primitives for algorithmic self-assembly: Copying and counting.Nano Letters, 5(12):2586–2592, 2005.
Arjav J. Chakravarti and Gerald Baumgartner.
The organic grid: Self-organizing computation on a peer-to-peer network.In Proceedings of the 1st International Conference on Autonomic Computing (ICAC04), pages 96–103, New York, NY,USA, 2004.
Jeffrey Dean and Sanjay Ghemawat.
Mapreduce: Simplified data processing on large clusters.In Proceedings of the 6th Symposium on Operating System Design and Implementation (OSDI04), San Francisco, CA,USA, December 2004.
High performance computing and communications.
http://www.usc.edu/hpcc.
Abdurrahman Hacioglu and Ibrahim Ozkol.
Transonic airfoil design and optimisation by using vibrational genetic algorithm.Aircraft Engineering and Aerospace Technology, 75(4):350–357, 2003.
Thomas F. Knight, Jr. and Gerald Jay Sussman.
Cellular gate technology.Unconventional Models of Computation, pages 257–272, 1997.
Eric Korpela, Dan Werthimer, David Anderson, Jeff Cobb, and Matt Lebofsky.
SETI@home — massively distributed computing for SETI.IEEE MultiMedia, 3(1):78–83, 1996.
Michail G. Lagoudakis and Thomas H. LaBean.
2D DNA self-assembly for satisfiability.DIMACS Series in Discrete Mathematics and Theoretical Computer Science, 54:141–154, 1999.
Stefan M. Larson, Christopher D. Snow, Michael R. Shirts, and Vijay S. Pande.
Folding@Home and Genome@Home: Using Distributed Computing to Tackle Previously Intractable Problems inComputational Biology.Horizon Press, 2002.
Sam Malek, George Edwards, Yuriy Brun, Hossein Tajalli, Joshua Garcia, Ivo Krka, Nenad Medvidovic, Marija
Mikic-Rakic, and Gaurav Sukhatme.An architecture-driven software mobility framework.Journal of Systems and Software, In Press, 2010.
Sam Malek, Marija Mikic-Rakic, and Nenad Medvidovic.
A style-aware architectural middleware for resource-constrained, distributed systems.IEEE Transactions on Software Engineering, 31(3):256–272, 2005.
Pablo Moisset de Espanes.
Computerized exhaustive search for optimal self-assembly counters.In Proceedings of the 2nd Foundations of Nanoscience: Self-Assembled Architectures and Devices (FNANO05), pages24–25, Snowbird, UT, USA, April 2005.
Rajeev Motwani and Prabhakar Raghavan.
Randomized Algorithms.Cambridge University Press, New York, NY, USA, 1995.
Marija Mikic-Rakic, Nikunj R. Mehta, and Nenad Medvidovic.
Architectural style requirements for self-healing systems.In Proceedings of 1st Workshop on Self-Healing Systems, Charleston, SC, USA, November 2002.
Larry Peterson, Tom Anderson, David Culler, and Timothy Roscoe.
A blueprint for introducing disruptive technology into the Internet.ACM SIGCOMM Computer Communication Review, 33(1):59–64, 2003.
Lulu Qian and Erik Winfree.
A simple DNA gate motif for synthesizing large-scale circuits.In In Proceedings of the 14th International Meeting on DNA Computing, (DNA08), pages 70–89, Prague, CzechRepublic, June 2008.
Andres J. Ramirez, David B. Knoester, Betty H.C. Cheng, and Philip K. McKinley.
Applying genetic algorithms to decision making in autonomic computing systems.In Proceedings of the 6th International Conference on Autonomic Computing (ICAC06), pages 97–106, Barcelona, Spain,2009.
Rosetta@home.
http://boinc.bakerlab.org/rosetta, 2007.
Paul W. K. Rothemund, Nick Papadakis, and Erik Winfree.
Algorithmic self-assembly of DNA Sierpinski triangles.PLoS Biology, 2(12):e424, 2004.
Ronald Linn Rivest, Adi Shamir, and Leonard Adleman.
A method for obtaining digital signatures and public-key cryptosystems.Communications of the ACM, 21(2):120–126, 1978.
Paul W. K. Rothemund and Erik Winfree.
The program-size complexity of self-assembled squares.In Proceedings of the 32nd Annual ACM Symposium on Theory of Computing (STOC00), pages 459–468, Portland, OR,USA, May 2000.
M. Sinha, C. S. Kennedy, and M.L. Ramundo.
Artificial neural network predicts CT scan abnormalities in pediatric patients with closed head injury.The Journal of Trauma, 50(2):308–312, 2001.
David Soloveichik and Erik Winfree.
Complexity of self-assembled shapes.SIAM Journal on Computing, 36(6):1544–1569, 2007.
Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy.
Software Architecture: Foundations, Theory, and Practice.John Wiley & Sons, 2009.
Erik Winfree and Renat Bekbolatov.
Proofreading tile sets: Error correction for algorithmic self-assembly.In Proceedings of the 43rd Annual IEEE Symposium on Foundations of Computer Science (FOCS02), volume 2943,pages 126–144, Madison, WI, USA, June 2003.
David West.
Neural network credit scoring models.Computers & Operations Research, 27(11–12):1131–1152, 2000.
Erik Winfree.
Algorithmic Self-Assembly of DNA.PhD thesis, California Institute of Technology, Pasadena, CA, USA, June 1998.
Erik Winfree.
Simulations of computing by self-assembly of DNA.Technical Report CS-TR:1998:22, California Institute of Technology, Pasadena, CA, USA, 1998.
Westley Weimer, ThanhVu Nguyen, Claire Le Goues, and Stephanie Forrest.
Automatically finding patches using genetic programming.In Proceedings of the ACM/IEEE 31st International Conference on Software Engineering (ICSE09), pages 364–374,Vancouver, Canada, 2009.
Gerhard J. Woeginger.
Exact algorithms for NP-hard problems: a survey.Combinatorial Optimization - Eureka, You Shrink!, pages 185–207, 2003.