algorithms in percolation problem: how to identify and measure

93
Algorithms in Percolation Problem: how to identify and measure cluster size distribution 1

Upload: haanh

Post on 05-Jan-2017

221 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Algorithms in Percolation Problem: how to identify and measure

Algorithms in Percolation

Problem: how to identify and measure cluster size

distribution

1

Page 2: Algorithms in Percolation Problem: how to identify and measure

Single-Cluster growth “Leath-Alexandrowicz method”

2

P. L. Leath, Phys. Rev. B 14, 5046 (1976) Z. Alexandrowicz, Phys. Lett. A 80, 284 (1980).

Paul Leath Rutgers University

Page 3: Algorithms in Percolation Problem: how to identify and measure

Leath-Alexandrowicz Algorithm

•  “Grow” clusters by adding sites one at a time from an initial seed

•  Two methods: –  “Breadth first” or “First-In-First-Out” (FIFO)

•  Requires making a list or queue –  “Depth first” or “Last-In-Last-Out” (LIFO)

•  Can be done using stack and recursion

3

Page 4: Algorithms in Percolation Problem: how to identify and measure

4

FIFO site percolation

Start with a seed site that is “wet”

Check neighbors in this order:

1

2

3

4

Page 5: Algorithms in Percolation Problem: how to identify and measure

5

Occupy a site with probability p

Orange = first shell

FIFO site percolation

Unchecked sites queue:

Page 6: Algorithms in Percolation Problem: how to identify and measure

6

Occupy a site with probability p

Orange = first shell

FIFO site percolation

Unchecked sites queue:

Page 7: Algorithms in Percolation Problem: how to identify and measure

7

FIFO site percolation

Make site “vacant” with probability 1-p

Orange = first shell

Unchecked sites queue:

Page 8: Algorithms in Percolation Problem: how to identify and measure

8

FIFO site percolation

Make site “vacant” with probability 1-p

Orange = first shell

Unchecked sites queue:

Page 9: Algorithms in Percolation Problem: how to identify and measure

9

FIFO site percolation

Make site “vacant” with probability 1-p

Orange = first shell

Unchecked sites queue:

Page 10: Algorithms in Percolation Problem: how to identify and measure

10

FIFO site percolation

Green = second shell

Unchecked sites queue:

Page 11: Algorithms in Percolation Problem: how to identify and measure

11

FIFO site percolation

Green = second shell

Unchecked sites queue:

Page 12: Algorithms in Percolation Problem: how to identify and measure

12

FIFO site percolation

Green = second shell

Unchecked sites queue:

Page 13: Algorithms in Percolation Problem: how to identify and measure

13

FIFO site percolation

Green = second shell

Unchecked sites queue:

Page 14: Algorithms in Percolation Problem: how to identify and measure

14

FIFO site percolation

Green = second shell

Unchecked sites queue:

Page 15: Algorithms in Percolation Problem: how to identify and measure

15

FIFO site percolation

Blue = third shell

Unchecked sites queue:

Page 16: Algorithms in Percolation Problem: how to identify and measure

16

FIFO site percolation

Blue = third shell

Unchecked sites queue:

Page 17: Algorithms in Percolation Problem: how to identify and measure

17

FIFO site percolation

Blue = third shell

Unchecked sites queue:

Page 18: Algorithms in Percolation Problem: how to identify and measure

18

FIFO site percolation

Blue = third shell

Unchecked sites queue:

Page 19: Algorithms in Percolation Problem: how to identify and measure

19

FIFO site percolation

Violet = fourth shell

Unchecked sites queue:

Page 20: Algorithms in Percolation Problem: how to identify and measure

20

FIFO site percolation

Violet = fourth shell

Unchecked sites queue:

Page 21: Algorithms in Percolation Problem: how to identify and measure

FIFO algorithm

“Pop” new growth site from queue For (neighbors = 1 to 4)

if (neighbor == unvisited) if (randomnumber < prob) neighbor = occupied “push” neighbor on queue else neighbor = vacant.

Page 22: Algorithms in Percolation Problem: how to identify and measure

22

LIFO site percolation

Page 23: Algorithms in Percolation Problem: how to identify and measure

23

LIFO site percolation

Orange = growth from first neighbor of seed

Page 24: Algorithms in Percolation Problem: how to identify and measure

24

LIFO site percolation

Orange = growth from first neighbor of seed

Page 25: Algorithms in Percolation Problem: how to identify and measure

25

LIFO site percolation

Orange = growth from first neighbor of seed

Page 26: Algorithms in Percolation Problem: how to identify and measure

26

LIFO site percolation

Orange = growth from first neighbor of seed

Page 27: Algorithms in Percolation Problem: how to identify and measure

27

LIFO site percolation

Orange = growth from first neighbor of seed

Page 28: Algorithms in Percolation Problem: how to identify and measure

28

LIFO site percolation

Orange = growth from first neighbor of seed

Put all growing sites on a stack

Page 29: Algorithms in Percolation Problem: how to identify and measure

29

LIFO site percolation

Orange = growth from first neighbor of seed

Page 30: Algorithms in Percolation Problem: how to identify and measure

30

LIFO site percolation

Orange = growth from first neighbor of seed

Page 31: Algorithms in Percolation Problem: how to identify and measure

31

LIFO site percolation

Orange = growth from first neighbor of seed

Page 32: Algorithms in Percolation Problem: how to identify and measure

32

LIFO site percolation

Orange = growth from first neighbor of seed

Page 33: Algorithms in Percolation Problem: how to identify and measure

33

LIFO site percolation

Orange = growth from first neighbor of seed

Page 34: Algorithms in Percolation Problem: how to identify and measure

34

LIFO site percolation

Orange = growth from first neighbor of seed

Page 35: Algorithms in Percolation Problem: how to identify and measure

35

LIFO site percolation

Orange = growth from first neighbor of seed

Page 36: Algorithms in Percolation Problem: how to identify and measure

36

LIFO site percolation

Blue = growth from third neighbor of seed

Page 37: Algorithms in Percolation Problem: how to identify and measure

37

LIFO site percolation

Violet = growth from fourth neighbor of seed

Page 38: Algorithms in Percolation Problem: how to identify and measure

LIFO algorithm (can also use recursion)

Get new growth site from stack For (neighbors = 1 to 4)

if (neighbor == unvisited) if (randomnumber < prob) neighbor = occupied put neighbor on stack else neighbor = vacant.

Page 39: Algorithms in Percolation Problem: how to identify and measure

39

FIFO bond percolation

Red = seed “activated” or “wet” site

Page 40: Algorithms in Percolation Problem: how to identify and measure

40

FIFO bond percolation

Orange = first shell of bonds

Add bonds to dry sites with probability p

Page 41: Algorithms in Percolation Problem: how to identify and measure

41

FIFO bond percolation

Orange = first shell of bonds

Add bonds to dry sites with probability p

Page 42: Algorithms in Percolation Problem: how to identify and measure

42

FIFO bond percolation

Orange = first shell of bonds

Vacant bond with probability 1 - p

Page 43: Algorithms in Percolation Problem: how to identify and measure

43

FIFO bond percolation

Orange = first shell of bonds

Vacant bond with probability 1 - p

Page 44: Algorithms in Percolation Problem: how to identify and measure

44

FIFO bond percolation

Green = second shell of bonds

Page 45: Algorithms in Percolation Problem: how to identify and measure

45

FIFO bond percolation

Green = second shell of bonds

Page 46: Algorithms in Percolation Problem: how to identify and measure

46

FIFO bond percolation

Green = second shell of bonds

Page 47: Algorithms in Percolation Problem: how to identify and measure

47

FIFO bond percolation

Green = second shell of bonds

Here we are concerned with the wet sites only and do not add bonds already wet sites

Page 48: Algorithms in Percolation Problem: how to identify and measure

48

FIFO bond percolation

Green = second shell of bonds

Here we are concerned with the wet sites only and do not add bonds already wet sites

Page 49: Algorithms in Percolation Problem: how to identify and measure

49

FIFO bond percolation

Blue = third shell of bonds

Here we are concerned with the wet sites only and do not add bonds already wet sites

Page 50: Algorithms in Percolation Problem: how to identify and measure

50

FIFO bond percolation

Blue = third shell of bonds

Here we are concerned with the wet sites only and do not add bonds already wet sites

Page 51: Algorithms in Percolation Problem: how to identify and measure

51

FIFO bond percolation

Blue = third shell of bonds

Here we are concerned with the wet sites only and do not add bonds already wet sites

Page 52: Algorithms in Percolation Problem: how to identify and measure

52

FIFO bond percolation

Blue = third shell of bonds

Here we are concerned with the wet sites only and do not add bonds already wet sites

Page 53: Algorithms in Percolation Problem: how to identify and measure

53

FIFO bond percolation

Violet = fourth shell of bonds

Here we are concerned with the wet sites only and do not add bonds already wet sites

Page 54: Algorithms in Percolation Problem: how to identify and measure

54

FIFO bond percolation

Violet = fourth shell of bonds

The final object is a minimally spanning tree that connects to every wet site of the cluster

Page 55: Algorithms in Percolation Problem: how to identify and measure

FIFO bond percolation (finding wetted sites)

“Pop” new growth site from queue For (neighbors = 1 to 4)

if (neighbor == unvisited) if (randomnumber < prob) neighbor = occupied “push” neighbor on queue else neighbor = vacant.

Identical to FIFO site perc. except for this line being taken out

Page 56: Algorithms in Percolation Problem: how to identify and measure

Hoshen-Kopelman algorithm 1976

56

J. Hoshen and R. Kopelman, Phys. Rev. B 14:3438 (1976).

Raoul Kopelman, University of Michigan

Page 57: Algorithms in Percolation Problem: how to identify and measure

57

Hoshen-Kopelman Algorithm

Look at last row of growing inteface.

Each color represents a connected cluster

(Bond percolation)

Page 58: Algorithms in Percolation Problem: how to identify and measure

58

Hoshen-Kopelman Algorithm

Add bonds sequentially with probability p

(Bond percolation)

Page 59: Algorithms in Percolation Problem: how to identify and measure

59

Hoshen-Kopelman Algorithm

Add bonds sequentially with probability p

(Bond percolation)

Page 60: Algorithms in Percolation Problem: how to identify and measure

60

Hoshen-Kopelman Algorithm

Add bonds sequentially with probability p

(Bond percolation)

Page 61: Algorithms in Percolation Problem: how to identify and measure

61

Hoshen-Kopelman Algorithm

Add bonds sequentially with probability p

(Bond percolation)

Page 62: Algorithms in Percolation Problem: how to identify and measure

62

Hoshen-Kopelman Algorithm

Add bonds sequentially with probability p

(Bond percolation)

Page 63: Algorithms in Percolation Problem: how to identify and measure

63

Hoshen-Kopelman Algorithm

Add bonds sequentially with probability p

(Bond percolation)

Page 64: Algorithms in Percolation Problem: how to identify and measure

64

Hoshen-Kopelman Algorithm

Add bonds sequentially with probability p

(Bond percolation)

Page 65: Algorithms in Percolation Problem: how to identify and measure

65

Hoshen-Kopelman Algorithm

Repeat!!!!

(Bond percolation)

Can simulate lattices as large as 100,000,000 x 100,000,000 this way!!!!!

Page 66: Algorithms in Percolation Problem: how to identify and measure

Newman-Ziff algorithm 2000

66

Page 67: Algorithms in Percolation Problem: how to identify and measure

67

Newman-Ziff Algorithm

Start with an empty lattice, compute Q(Γ0) = Q0

Page 68: Algorithms in Percolation Problem: how to identify and measure

68

Newman-Ziff Algorithm

Randomly occupy a bond, compute Q(Γ1)

Page 69: Algorithms in Percolation Problem: how to identify and measure

69

Newman-Ziff Algorithm

Randomly occupy an unoccupied bond, compute Q(Γ2)

Page 70: Algorithms in Percolation Problem: how to identify and measure

70

Newman-Ziff Algorithm

And so on and compute Q(Γb) with b number of bonds

Page 71: Algorithms in Percolation Problem: how to identify and measure

71

Newman-Ziff Algorithm

Until all bonds are occupied, compute Q(ΓM)

M is the total number of bonds

Page 72: Algorithms in Percolation Problem: how to identify and measure

72

•  Any quantity as a function of p is computed as

where Qb = Q(Γb). •  Each sweep takes time of O(N)

0

! (1 )!( )!

Mb M b

bb

MQ p p Qb M b

=

= −−∑

Newman-Ziff Algorithm

Page 73: Algorithms in Percolation Problem: how to identify and measure

M. E .J. Newman and R. M. Ziff, Phys. Rev. Letters 85, 4104 (2000)

•  Bonds are added one at a time, and a bookkeeping scheme is used to keep track of the cluster structure.

Mark  Newman,  U.  Michigan  

Page 74: Algorithms in Percolation Problem: how to identify and measure

data structure

•  At each lattice site is a variable, ptr[i] •  If the ptr[i] > 0, it gives the position of another site on

the cluster (a link). •  If ptr[i] < 0, “i” is the root of the cluster, and |ptr[i]|

gives the number of sites belonging to the cluster.

Page 75: Algorithms in Percolation Problem: how to identify and measure

procedure •  Initially, a random ordering of the bonds of the system is

made •  1. A bond is chosen randomly, and findroot is used to

find the root at each end (and the link paths are collapsed)

•  a) If the two ends belong to different clusters, the two are merged.

•  b) If both ends of the bond are in the same cluster, nothing is done.

Page 76: Algorithms in Percolation Problem: how to identify and measure

findroot

-- findroot jumps from link to link until it gets to the root -- when the recursive calls “unwind”, they rename every link to point to the root

Before

After

Page 77: Algorithms in Percolation Problem: how to identify and measure

merging

-- the root of the smaller cluster is linked to the root of the larger cluster, and the size is adjusted accordingly

Page 78: Algorithms in Percolation Problem: how to identify and measure

convolution To go from the canonical (fixed number of bonds) to the grand-canonical (fixed occupancy p), one must convolve with a

binomial distribution:

Qn = quantity (such as mean size) for a system of fixed n Q(p) = same quantity for a fixed probability p

Page 79: Algorithms in Percolation Problem: how to identify and measure

Example of Exact canonical-grand canonical: the crossing probability of a square system, up to 7 x 7 (from exact enumeration):

Page 80: Algorithms in Percolation Problem: how to identify and measure

example: probability of wrapping a square torus in one direction but not

the other for all values of p •  L x L, L = 32, 64, 128, 256 •  Reaches maximum ≈ pc

•  Excellent convergence:

Easily find •  pc = 0.5927462..

p

Page 81: Algorithms in Percolation Problem: how to identify and measure

“Percolation Threshold” Wikipedia page

Page 82: Algorithms in Percolation Problem: how to identify and measure

ns = number of clusters of size s, at the critical threshold pc. τ = 187/91.

Page 83: Algorithms in Percolation Problem: how to identify and measure
Page 84: Algorithms in Percolation Problem: how to identify and measure

Used Cardys’ result for crossing of an annulus

to find size distribution

Page 85: Algorithms in Percolation Problem: how to identify and measure

Simulation results – up to 2.5 x 1011 clusters up to size s = 1000.

Page 86: Algorithms in Percolation Problem: how to identify and measure

Explosive growth in clusters created through a biased “Achlioptas” growth

process on a regular lattice

Page 87: Algorithms in Percolation Problem: how to identify and measure

Achlioptas process •  Recently, Achlioptas, D’Sousa, and Spencer considered cluster growth

on random (Erdös-Rényi ) lattices by the so-called Achlioptas process: –  Pick two bonds –  Calculate weight = product of masses of the two clusters the bond connects –  Choose bond of lower weight

•  ER = Erdös-Rényi (regular percolation), BF = Bounded size rule, PR = product rule. C/n = maximum cluster size divided by the number of sites

•  They find “Explosive Growth” in the PR model.

Explosive growth

Achlioptas et al, Science 2009

Page 88: Algorithms in Percolation Problem: how to identify and measure

Dimitris  Achlioptas,  UCSC  

Raissa  D’Sousa,  UCD  

Joel  Spencer,  NYU  

Page 89: Algorithms in Percolation Problem: how to identify and measure

Alfréd  Rényi  1921-­‐1970  

My  Erdös  number  is  2  by  way  of  Mark  Kac   Tree  form  

Minimum  spanning  tree  

Page 90: Algorithms in Percolation Problem: how to identify and measure

Achlioptas processes on a regular (percolation) lattices

•  Define t = time = number of bonds added to

connect distinct clusters. •  Then, the number of clusters is n – t, where n

is the initial number of sites, since adding additional

Page 91: Algorithms in Percolation Problem: how to identify and measure

Regular percolation transition at t/n = 1 – Nc/n = (7 – 3 √3)/2 =

0.9019

t/n    

C/n    

For  laQce  percolaRon,  I  find  (1024x1024  laQce):  

Product Rule (PR)

Page 92: Algorithms in Percolation Problem: how to identify and measure

The SIR model on a square lattice

Susceptible-Infected-Recovered

With David de Souza and Tânia Tomé.

Page 93: Algorithms in Percolation Problem: how to identify and measure

•  That is S → I with rate (1-c)Ineighbors/4 •  I →R with rate c

•  (I remains I for an exponentially distributed time)