notes on the optimal encoding scheme for self-assembly

40
Notes on the optimal encoding scheme for self-assembly Days 10, 11 and 12 Of Comp Sci 480

Upload: ivor-davis

Post on 03-Jan-2016

29 views

Category:

Documents


2 download

DESCRIPTION

Notes on the optimal encoding scheme for self-assembly. Days 10, 11 and 12 Of Comp Sci 480. Question. How do you encode an n-bit binary string?. Answer. Have a unique tile type to encode each bit separately, so we represent 1 bit per tile. We’ve seen this before. Is this optimal? NO!. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Notes on the optimal encoding scheme for self-assembly

Notes on the optimal encoding scheme for self-assembly

Days 10, 11 and 12 Of Comp Sci 480

Page 2: Notes on the optimal encoding scheme for self-assembly

Question

How do you encode an n-bit binary string?

Page 3: Notes on the optimal encoding scheme for self-assembly

Answer

Have a unique tile type to encode each bit separately, so we represent 1 bit per tile.

We’ve seen this before.

Is this optimal?

NO!

Page 4: Notes on the optimal encoding scheme for self-assembly

A brief history

• Rothemund and Winfree (2000): 1 bit per tile• Adleman, et. al. (2002): > 1 bit per tile (an

optimal number of bits per tile)– Works at temperature 3

• Soloveichik and Winfree (2004): Modified optimal encoding scheme of Adleman, et. al. to work at temperature 2– Encodes n bits using O(n/log n) tile types

Page 5: Notes on the optimal encoding scheme for self-assembly

Basic idea

• Start with a binary string x = xn-1xn-2 x∙∙∙ 0

• Choose k such that it is the smallest number satisfying n/log n ≤ 2k

• More math later…

• Break w up into n/k k-bit substrings and store each substring in a unique tile type

• Extract the bits from all the substrings until you have 1 bit per tile

• Use the value to start a binary counter, or something else…

Page 6: Notes on the optimal encoding scheme for self-assembly

An example (some details missing)…

Page 7: Notes on the optimal encoding scheme for self-assembly

For the sake of example, let k = 4 for the binary string x = 01100101

0L

0L

0

$

+

0

0

0101

101$

R

R

101

R

R

101

01

R

R

01

1

101

01

R

R

0

0

0

0

1

1

1

1

0L

0L

11R

R

100

01

100

0

00

0

11

1

11

1

00L

0

11

1

Can use the bits encoded in the north glues of the topmost row as the start value for a binary counter (or an input to a Turing machine)!

0101

R

R

0101

+

0101

0101+

10

+

+

10

0L

0L

1

10

110

R

R

0101

R

R

0101

+

0101

0101+

110

+

+

110

0L

110

0110L

R

1

0101

12

+

23

0110L

3

1

1

1

0

10

R

R

Page 8: Notes on the optimal encoding scheme for self-assembly

The general construction…

Page 9: Notes on the optimal encoding scheme for self-assembly

The general construction

Unpacking tiles broken down into several logical groups1. Seed row2. Extract a bit3. Copy substring being extracted4. Initiate unpacking of a new substring5. Copy substring not being extracted6. Copy a bit7. The right side

Page 10: Notes on the optimal encoding scheme for self-assembly

The seed row

wm-1L

2m-1

+

2m-22m-1

wm-2

2m-32m-2

+

2m-42m-3

w0

01

R

0

Since x = xn-1xn-2∙∙∙x0, we let m = n/k, i.e., the number of k-bit substrings in x.

Create these tile types:

Write x = wm-1wm-2∙∙∙w0 as the concatenation of m k-bit binary substrings, with wm-1 padded to the left with leading 0’s if needed.

Page 11: Notes on the optimal encoding scheme for self-assembly

The general construction

Unpacking tiles broken down into several logical groups Seed row2. Extract a bit3. Copy substring being extracted4. Initiate unpacking of a new substring5. Copy substring not being extracted6. Copy a bit7. The right side

Page 12: Notes on the optimal encoding scheme for self-assembly

Extract bit

For all x ϵ {0,1}j where 0 < j ≤ k-1 and b ϵ {0,1}, create the following tile types:

Notation: {0,1}j means “the set of all length j binary strings”

0110L

3

+

23

0101

12

R

1

0L

110

0110L

0101

R

R

0101

R

R

0L

0L

0101

R

R

0101

R

R

110

+

+

110

10

+

+

10

+

0101

0101+

+

0101

0101+

1

10

110

0L

0L

1

1

0

$

+

0

1

0

10

0

0101

101$

R

R

101

R

R

101

01

R

R

01

1

101

01

R

R

0

0

0

0

1

1

1

1

0L

0L

11R

R

100

01

100

0

00

0

11

1

11

1

00L

0L

11

1

bL

x

bxL

b

x

bx

Page 13: Notes on the optimal encoding scheme for self-assembly

The general construction

Unpacking tiles broken down into several logical groups Seed row Extract a bit3. Copy substring being extracted4. Initiate unpacking of a new substring5. Copy substring not being extracted6. Copy a bit7. The right side

Page 14: Notes on the optimal encoding scheme for self-assembly

Copy substring being extracted

For all x ϵ {0,1}j where 1 < j ≤ k-1, create the following tile types:

0110L

3

+

23

0101

12

R

1

0L

110

0110L

0101

R

R

0101

R

R

0L

0L

0101

R

R

0101

R

R

110

+

+

110

10

+

+

10

+

0101

0101+

+

0101

0101+

1

10

110

0L

0L

1

1

0

$

+

0

1

0

10

0

0101

101$

R

R

101

R

R

101

01

R

R

01

1

101

01

R

R

0

0

0

0

1

1

1

1

0L

0L

11R

R

100

01

100

0

00

0

11

1

11

1

00L

0L

11

1

x

+

+

x

x

R

R

x

Page 15: Notes on the optimal encoding scheme for self-assembly

The general construction

Unpacking tiles broken down into several logical groups Seed row Extract a bit Copy substring being extracted4. Initiate unpacking of a new substring5. Copy substring not being extracted6. Copy a bit7. The right side

Page 16: Notes on the optimal encoding scheme for self-assembly

Initiate unpacking of a new substring

For all x ϵ {0,1}k-1 and b ϵ {0,1}, create the following tile types:

0110L

3

+

23

0101

12

R

1

0L

110

0110L

0101

R

R

0101

R

R

0L

0L

0101

R

R

0101

R

R

110

+

+

110

10

+

+

10

+

0101

0101+

+

0101

0101+

1

10

110

0L

0L

1

1

0

$

+

0

1

0

10

0

0101

101$

R

R

101

R

R

101

01

R

R

01

1

101

01

R

R

0

0

0

0

1

1

1

1

0L

0L

11R

R

100

01

100

0

00

0

11

1

11

1

00L

0L

11

1

b

x

bx

$

Page 17: Notes on the optimal encoding scheme for self-assembly

The general construction

Unpacking tiles broken down into several logical groups Seed row Extract a bit Copy substring being extracted Initiate unpacking of a new substring5. Copy substring not being extracted6. Copy a bit7. The right side

Page 18: Notes on the optimal encoding scheme for self-assembly

Copy substring not being extracted

For all x ϵ {0,1}k, create the following tile types:

0110L

3

+

23

0101

12

R

1

0L

110

0110L

0101

R

R

0101

R

R

0L

0L

0101

R

R

0101

R

R

110

+

+

110

10

+

+

10

+

0101

0101+

+

0101

0101+

1

10

110

0L

0L

1

1

0

$

+

0

1

0

10

0

0101

101$

R

R

101

R

R

101

01

R

R

01

1

101

01

R

R

0

0

0

0

1

1

1

1

0L

0L

11R

R

100

01

100

0

00

0

11

1

11

1

00L

0L

11

1

+

x

x

+

x

+

+

x

x

R

R

x

Page 19: Notes on the optimal encoding scheme for self-assembly

The general construction

Unpacking tiles broken down into several logical groups Seed row Extract a bit Copy substring being extracted Initiate unpacking of a new substring Copy substring not being extracted6. Copy a bit7. The right side

Page 20: Notes on the optimal encoding scheme for self-assembly

Copy bit

For all b ϵ {0,1}, create the following tile types:

0110L

3

+

23

0101

12

R

1

0L

110

0110L

0101

R

R

0101

R

R

0L

0L

0101

R

R

0101

R

R

110

+

+

110

10

+

+

10

+

0101

0101+

+

0101

0101+

1

10

110

0L

0L

1

1

0

$

+

0

1

0

10

0

0101

101$

R

R

101

R

R

101

01

R

R

01

1

101

01

R

R

0

0

0

0

1

1

1

1

0L

0L

11R

R

100

01

100

0

00

0

11

1

11

1

00L

0L

11

1

bL

bL

b

b

b

$

+

b

Page 21: Notes on the optimal encoding scheme for self-assembly

The general construction

Unpacking tiles broken down into several logical groups Seed row Extract a bit Copy substring being extracted Initiate unpacking of a new substring Copy substring not being extracted Copy a bit7. The right side

Page 22: Notes on the optimal encoding scheme for self-assembly

The right side

Create the following tile types:

0110L

3

+

23

0101

12

R

1

0L

110

0110L

0101

R

R

0101

R

R

0L

0L

0101

R

R

0101

R

R

110

+

+

110

10

+

+

10

+

0101

0101+

+

0101

0101+

1

10

110

0L

0L

1

1

0

$

+

0

1

0

10

0

0101

101$

R

R

101

R

R

101

01

R

R

01

1

101

01

R

R

0

0

0

0

1

1

1

1

0L

0L

11R

R

100

01

100

0

00

0

11

1

11

1

00L

0L

11

1

0R

R

0

R

R

1R

R

1

Page 23: Notes on the optimal encoding scheme for self-assembly

Tile complexity (math)

Page 24: Notes on the optimal encoding scheme for self-assembly

Setup

For an arbitrary length n bit string w, represented as n/k k-bit substrings, how many tile types do we need to extract w?

Reminder: n is the number of bits in the input binary string.

Reminder: k chosen such that it is the smallest number satisfying n/log n ≤ 2k

Page 25: Notes on the optimal encoding scheme for self-assembly

A key fact

• 2k < 2n/log n• Assume otherwise…• 2k ≥ 2n/log n 2k-1 ≥ n/log n

– Contradiction to the definition of k being the smallest such number with n/log n ≤ 2k

Page 26: Notes on the optimal encoding scheme for self-assembly

• Seed row has 2*n/k unique tile types• We know 2k ≥ n/log n by our choice of k• Therefore: k ≥ log(n/log n) ; take the log of both sides of the

previous inequality• Then we have, for “large” values of n:

2*n/k≤ 2*n/log(n/log n)= 2*n/(log n - log log n) ; log (a/b) = log a - log b< 2*n/(log n - 0) ; 0 < log log n for n ≥ 4≤ 2n/log n + 1 ; x ≤ x + 1 for any x≤ 2n/log n + n/log n ; n/log n ≥ 1 for n ≥ 2= 3n/log n= O(n/log n)

The seed row

Page 27: Notes on the optimal encoding scheme for self-assembly

Tile complexity of the general construction

Unpacking tiles broken down into several logical groups Seed row: O(n/log n)2. Extract a bit3. Copy substring being extracted4. Initiate unpacking of a new substring5. Copy substring not being extracted6. Copy a bit7. The right side

Page 28: Notes on the optimal encoding scheme for self-assembly

Extract a bit• We need to compute 2*(2(|{0,1}1| + |{0,1}2| + + |{0,1}∙∙∙ k-1|))• 2*(2(|{0,1}1| + |{0,1}2| + + |{0,1}∙∙∙ k-1|)) = 2*(2*(2+4+ +2∙∙∙ k-1))

= 4*(2k - 2)< 4*2k

< 4*2*n/log n= O(n/log n)

bL

x

For all x ϵ {0,1}j where 0 < j ≤ k-1 and b ϵ {0,1}, create the following tile types:

Notation: {0,1}j means “the set of all length j binary strings” bxL

b

x

bx

Page 29: Notes on the optimal encoding scheme for self-assembly

Tile complexity of the general construction

Unpacking tiles broken down into several logical groups Seed row: O(n/log n) Extract a bit O(n/log n)3. Copy substring being extracted4. Initiate unpacking of a new substring5. Copy substring not being extracted6. Copy a bit7. The right side

Page 30: Notes on the optimal encoding scheme for self-assembly

Copy substring being extracted

x

+For all x ϵ {0,1}j where 1 < j ≤ k-1 and b ϵ {0,1}, create the following tile types: +

x

x

R

R

x

• We need to compute 2*(2(|{0,1}2| + |{0,1}3| + + |{0,1}∙∙∙ k-1|))• 2*(2(|{0,1}2| + |{0,1}3| + + |{0,1}∙∙∙ k-1|)) = 2*(2*(4+8+ +2∙∙∙ k-1))

= 4*(2k - 4)< 4*2k

< 4*2*n/log n= O(n/log n)

Page 31: Notes on the optimal encoding scheme for self-assembly

Tile complexity of the general construction

Unpacking tiles broken down into several logical groups Seed row: O(n/log n) Extract a bit O(n/log n) Copy substring being extracted O(n/log n)4. Initiate unpacking of a new substring5. Copy substring not being extracted6. Copy a bit7. The right side

Page 32: Notes on the optimal encoding scheme for self-assembly

Initiate unpacking of a new substring

b

xFor all x ϵ {0,1}k-1, and b ϵ {0,1}, create the following tile types:bx

$

• The size of the set {0,1}k-1 is 2k-1, and b can take on two possible values, so the total number of tile types created in this step is:

2*2k-1 = 2k < 2n/log n = O(n/log n)

Page 33: Notes on the optimal encoding scheme for self-assembly

Tile complexity of the general construction

Unpacking tiles broken down into several logical groups Seed row: O(n/log n) Extract a bit O(n/log n) Copy substring being extracted O(n/log n) Initiate unpacking of a new substring O(n/log n)5. Copy substring not being extracted6. Copy a bit7. The right side

Page 34: Notes on the optimal encoding scheme for self-assembly

Copy substring not being extracted

+

xFor all x ϵ {0,1}k, create the following tile types:x

+

x

+

+

x

x

R

R

x

• The size of the set {0,1}k is 2k, so the total number of tile types created in this step is:

3*2k < 3*2n/log n = O(n/log n)

Page 35: Notes on the optimal encoding scheme for self-assembly

Tile complexity of the general construction

Unpacking tiles broken down into several logical groups Seed row: O(n/log n) Extract a bit O(n/log n) Copy substring being extracted O(n/log n) Initiate unpacking of a new substring O(n/log n) Copy substring not being extracted O(n/log n) Copy a bit O(1) The right side O(1)

TOTAL: O(n/log n)

Page 36: Notes on the optimal encoding scheme for self-assembly

Summary

• We can encode an n-bit binary string using O(n/log n) unique tile types

Page 37: Notes on the optimal encoding scheme for self-assembly

Application to squares

• How do we apply the optimal encoding scheme to the self-assembly of an NxN square?

• What is the resulting tile complexity?– n = log N– Can encode n bits using O(n/log n) tile types– Tile complexity of square: O(log N / log log N)

• Homework problem

Page 38: Notes on the optimal encoding scheme for self-assembly

Improvement

• I presented the construction using “spacer” tiles in between each k-bit substring

• Can we remove the spacer tiles?• This wouldn’t give us an asymptotical

improvement over O(n/log n), but it might make implementation easier

• Definitely worth thinking about…

Page 39: Notes on the optimal encoding scheme for self-assembly

Improved (?) construction

Need to modify seed row:wm-1L

2m-1

+

2m-22m-1

wm-2

2m-32m-2

+

2m-42m-3

w0

01

R

0

wm-1L

2m-1

wm-2

2m-22m-1

w0R

01

Still get O(n/log n) tile types after deleting the “spacer” tile types.Need to combine “Copy substring being extracted” with “Copy substring not

being extracted” groups…

x

y

y

x

Among others, we will at least need these tile types… For all x ϵ {0,1}j, where 1 < j ≤ k-1, and for all y ϵ {0,1}k create the following tile types…

BEFORE…x

+

+

x

x

R

R

x

+

x

x

+

x

+

+

x

x

R

R

x

Copy substring being extracted Copy substring NOT being extracted

What is the tile complexity of just this group of tile types?

Page 40: Notes on the optimal encoding scheme for self-assembly

Tile complexity of modification• Tile complexity of our previous modification:“For all x ϵ {0,1}j, where 1 < j ≤ k-1, and for all y ϵ {0,1}k create the following tile types…”

|{0,1}j | 1 < j ≤ k-1 }|*|{0,1}k| = (2k-2) 2k

= 2k2k-2*2k

> 22k - 2*(2*n/log n)

= (2k)2- 2*(2*n/log n)≥ (n/log n)2 - 1/2*(n/log n)2

= 1/2*(n/log n)2

= Ω(n2/log2 n)= No good!

• It seems like the spacer tiles are needed, unless drastic changes are made.