142
Quantum Processes in Graph Computing Dr. Marko A. Rodriguez DataStax and Apache TinkerPop Rodriguez, M.A., Watkins, J.H., "Quantum Walks with Gremlin," GraphDay '16, pp. 1-16, Austin, Texas, January 2016. http://arxiv.org/abs/1511.06278

Quantum Processes in Graph Computing

Embed Size (px)

Citation preview

Page 1: Quantum Processes in Graph Computing

Quantum Processes in Graph Computing

Dr. Marko A. RodriguezDataStax and Apache TinkerPop

Rodriguez, M.A., Watkins, J.H., "Quantum Walks with Gremlin," GraphDay '16, pp. 1-16, Austin, Texas, January 2016. http://arxiv.org/abs/1511.06278

Page 2: Quantum Processes in Graph Computing

Part 1

Wave Dynamics in Graphs

Page 3: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 4: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 5: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 6: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 7: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 8: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 9: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 10: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 11: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 12: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 13: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 14: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 15: Quantum Processes in Graph Computing

0.0

-1.0

1.0

Page 16: Quantum Processes in Graph Computing

However, vertices don't "move." The graph topology is the only space.There is no "space" outside the graph.

"Then how do you model an oscillating vertex?"

By computing the amount of "energy" at the vertex over time.

"But traversers are indivisible objects! Energy must be able to be

divided indefinitely and take negative values."

Lets look at Gremlin Sacks.

Page 17: Quantum Processes in Graph Computing

Gremlin Sacks(a data structure local to the traverser)

(each traverser can carry an object along its way)

The traverser is not divisible, but that double floating point number in his sack is!

Page 18: Quantum Processes in Graph Computing

1.0

0.0

-1.0

1.0

Don't worry about the algorithm, just watch the visualization for now.

Page 19: Quantum Processes in Graph Computing

-0.5 0.5

0.0

-1.0

1.0

Don't worry about the algorithm, just watch the visualization for now.

Page 20: Quantum Processes in Graph Computing

-0.5 0.250.25

0.0

-1.0

1.0

Don't worry about the algorithm, just watch the visualization for now.

Page 21: Quantum Processes in Graph Computing

-0.125 0.125-0.3750.375

0.0

-1.0

1.0

Don't worry about the algorithm, just watch the visualization for now.

Page 22: Quantum Processes in Graph Computing

0.375-0.3125 -0.3125

0.0

-1.0

1.0

Don't worry about the algorithm, just watch the visualization for now.

Page 23: Quantum Processes in Graph Computing

0.15625 -0.156250.34375-0.34375

0.0

-1.0

1.0

Don't worry about the algorithm, just watch the visualization for now.

Page 24: Quantum Processes in Graph Computing

1 2 30 4 5 6

The graph.

Page 25: Quantum Processes in Graph Computing

1 2 30 4 5 6

1.0

g.withSack(1.0,sum).V(3). repeat( union( sack(mult).by(-0.5).out('left'), sack(mult).by(0.5).out('right') ) ).times(3)

An initial energy of 1.0 perturbs the graph.

Page 26: Quantum Processes in Graph Computing

1 2 30 4 5 6

g.withSack(1.0,sum).V(3). repeat( union( sack(mult).by(-0.5).out('left'), sack(mult).by(0.5).out('right') ) ).times(3)

-0.5 0.51.0

out('left') out('right')

The energy diffuses left and right along the graph.

Page 27: Quantum Processes in Graph Computing

1 2 30 4 5 6

g.withSack(1.0,sum).V(3). repeat( union( sack(mult).by(-0.5).out('left'), sack(mult).by(0.5).out('right') ) ).times(3)

-0.5 0.5

1 time

The total energy in the system is always 1.

Page 28: Quantum Processes in Graph Computing

Energy waves reverberate and thus, prior "left energy" can go right.

1 2 30 4 5 6

g.withSack(1.0,sum).V(3). repeat( union( sack(mult).by(-0.5).out('left'), sack(mult).by(0.5).out('right') ) ).times(3)

-0.5 0.250.25 -0.5 0.5

out('left') out('right') out('left') out('right')

Page 29: Quantum Processes in Graph Computing

1 2 30 4 5 6

g.withSack(1.0,sum).V(3). repeat( union( sack(mult).by(-0.5).out('left'), sack(mult).by(0.5).out('right') ) ).times(3)

-0.5 0.250.25 -0.5 0.5

out('left') out('right') out('left') out('right')

(-0.5 * 0.5) + (0.5 * -0.5)

-0.5-0.25 + -0.25

Energy constructively and destructively interferes.

Page 30: Quantum Processes in Graph Computing

1 2 30 4 5 6

g.withSack(1.0,sum).V(3). repeat( union( sack(mult).by(-0.5).out('left'), sack(mult).by(0.5).out('right') ) ).times(3)

-0.5 0.250.25

2 times

Page 31: Quantum Processes in Graph Computing

1 2 30 4 5 6

g.withSack(1.0,sum).V(3). repeat( union( sack(mult).by(-0.5).out('left'), sack(mult).by(0.5).out('right') ) ).times(3)

-0.125 0.125-0.3750.375 -0.5 0.250.25

out('left') out('left') out('left')out('right') out('right') out('right')

Page 32: Quantum Processes in Graph Computing

1 2 30 4 5 6

g.withSack(1.0,sum).V(3). repeat( union( sack(mult).by(-0.5).out('left'), sack(mult).by(0.5).out('right') ) ).times(3)

3 times

-0.125 0.125-0.3750.375

Page 33: Quantum Processes in Graph Computing

A wave is a diffusion of energy within a space.

The space is the graph.

The energy is contained within the traversers (via their sacks).

When a traverser splits, its sack energy is divided amongst its children traversers' sacks.

When traversers merge, their sack energy is summed to a single traverser sack.

If two energy sacks with the same parity are merged, constructive interference.

If a negative and a positive energy sack are merged, destructive interference.

Page 34: Quantum Processes in Graph Computing

Part 2

Quantum Mechanicsvia the

Copenhagen Interpretation

Page 35: Quantum Processes in Graph Computing

1

2

3

0 4 5

Space = Graph

Page 36: Quantum Processes in Graph Computing

Particle = Traverser

Page 37: Quantum Processes in Graph Computing

1

2

3

0 4 5

gremlin> g.V(0)==>v[0]

Page 38: Quantum Processes in Graph Computing

1

2

3

0 4 5

gremlin> g.V(0).out()==>v[1]

Page 39: Quantum Processes in Graph Computing

1

2

3

0 4 5

gremlin> g.V(0).out().out()==>??

? ?

"Two outgoing adjacent vertices, what should I do?"

Page 40: Quantum Processes in Graph Computing

1

2

3

0 4 5

gremlin> g.V(0).out().out()==>v[2]==>v[3]

Page 41: Quantum Processes in Graph Computing

1

2

3

0 4 5

gremlin> g.V(0).out().out()==>v[2]==>v[3]

2 particles are created from 1.In graph computing: "There are two legal paths, so take both."In physical computing: "Violates conservation of energy law (matter is created)."

Page 42: Quantum Processes in Graph Computing

1

2

3

0 4 5

gremlin> g.V(0).out().out().out()==>v[4]==>v[4]

In graph computing: "Two length 3 paths lead to vertex 4."In physical computing: "The twin particles coexist at vertex 4."

Page 43: Quantum Processes in Graph Computing

1

2

3

0 4 5

gremlin> g.V(0).out().out().out().out()==>v[5]==>v[5]

In graph computing: "Two length 3 paths lead to vertex 5."In physical computing: "The twin particles coexist at vertex 5."

Page 44: Quantum Processes in Graph Computing

1

2

3

0 4 5

What does a physical particle do when it is faced with a choice?

? ?

Page 45: Quantum Processes in Graph Computing

1

2

3

0 4 5

The particle takes both options!

The indivisible "particle" divides!

Page 46: Quantum Processes in Graph Computing

1

2

3

0 4 5

Two particles can't be "seen," but we know both options are taken.

When we try to see both "particles", they instantly become one particle.

"Why do you say the particle took both paths? If you find it only on a single path, then wasn't only one path taken?"

Wave interference!

Explanation coming soon...

"Wave Function Collapse"

Page 47: Quantum Processes in Graph Computing

The smallest "quanta" allowed is the particle.

Only one particle is ever directly observed.

However, prior to observation, the particle splits into pieces (a wave).

When we observe the system, the pieces becomes one again (a particle).

Other Interpretations of Quantum Mechanics

Multi-World Interpretation

Pilot Wave Interpretation

photonelectron bacteria!

an isolated system

Page 48: Quantum Processes in Graph Computing

Part 3The Quantum Wave Function

Page 49: Quantum Processes in Graph Computing

Classical Particle(A single unique "thing" exists)

The Particle Diffuses over Space as a Wave(The particle is in a quantum superposition)

The Wave Function is Perturbed(e.g., light tries to "see" the particle)

The Wave Function Collapses to a Classical Particle(The wave turns into a particle)

Page 50: Quantum Processes in Graph Computing

Classical Particle(A single unique "thing" exists)

The Particle Diffuses over Space as a Wave(The particle is in a quantum superposition)

The Wave Function is Perturbed(e.g., light tries to "see" the particle)

The Wave Function Collapses to a Classical Particle(The wave turns into a particle)

Obs

erve

dO

bser

ved

Infe

rred

Page 51: Quantum Processes in Graph Computing

48 49 5047 51 52 53

A 101 vertex line graph with the center being vertex 50.

Space

Page 52: Quantum Processes in Graph Computing

Classical Initial Step

The particle has a definite location and a spin/potential to the left.

48 49 5047 51 52 53

[1, 0]

[1,0]50

left-nessright-ness

For each option (degree of freedom), we need a vector component.

In the article, we call it "traversal superposition."

Page 53: Quantum Processes in Graph Computing

0.0

0.2

0.4

0.6

0.8

1.0

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

48 49 5047 51 52 53

The probability of seeing the particle at vertex 50 is 100%.

[1, 0]

12+ 0

2= 1

Wave Function to Probability Distribution

Page 54: Quantum Processes in Graph Computing

Coin Step

48 49 5047 51 52 53

H =1!

2

!

1 1

1 "1

"

The particle's spin is put into superposition.

[1, 0] !

!

1"2,

1"2

"

It has the option to go

left or right so it goes both!

Page 55: Quantum Processes in Graph Computing

Coin Step

48 49 5047 51 52 53

H =1!

2

!

1 1

1 "1

"

The particle's spin is put into superposition.

[1, 0] !

!

1"2,

1"2

"

"right particles" going right flip their sign.

"left particles" going left or right keep their sign.

Page 56: Quantum Processes in Graph Computing

Coin Step

48 49 5047 51 52 53

H =1!

2

!

1 1

1 "1

"

The particle's spin is put into superposition.

[1, 0] !

!

1"2,

1"2

"

1!

2

!

1 11 "1

"

· [1, 0] =

#

1!

2

1!

21!

2"

1!

2

$

· [1, 0] =

!

1!

2,

1!

2

"

Page 57: Quantum Processes in Graph Computing

Coin Step

48 49 5047 51 52 53

H =1!

2

!

1 1

1 "1

"

The particle's spin is put into superposition.

!""

1 ·1!

2

#

+

"

0 ·1!

2

##

,

""

1 ·1!

2

#

+

"

0 ·"1!

2

##$

=

!

1!

2,

1!

2

$

[1, 0] !

!

1"2,

1"2

"

1!

2

!

1 11 "1

"

· [1, 0] =

#

1!

2

1!

21!

2"

1!

2

$

· [1, 0] =

!

1!

2,

1!

2

"

Page 58: Quantum Processes in Graph Computing

Coin Step

48 49 5047 51 52 53

!

1!

2,

1!

2

"

Page 59: Quantum Processes in Graph Computing

The "particle" spinning left goes left and the "particle" spinning right goes right.

Shift Step

48 49 5047 51 52 53

!

1!

2, 0

" !

0,1!

2

"

!

1!

2,

1!

2

"

Page 60: Quantum Processes in Graph Computing

48 49 5047 51 52 53

!

1!

2, 0

" !

0,1!

2

"

Shift Step

Page 61: Quantum Processes in Graph Computing

P (v) = |c0|2 + |c1|

2

48 49 5047 51 52 53

!

1!

2, 0

" !

0,1!

2

"

!

1!

2

"2

+ 02= 0.5 0

2+

!

1!

2

"2

= 0.5

Wave Function to Probability Distribution

The probability of locating the classical particle each vertex is a function of the total wave amplitude at that vertex.

50%-chance 50%-chance

Page 62: Quantum Processes in Graph Computing

0.0

0.1

0.2

0.3

0.4

0.5

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

48 49 5047 51 52 53

!

1!

2, 0

" !

0,1!

2

"

!

1!

2

"2

+ 02= 0.5 0

2+

!

1!

2

"2

= 0.5

The probability of seeing the particle at vertex 49 or 51 is 50%.

Wave Function to Probability Distribution

Page 63: Quantum Processes in Graph Computing

48 49 5047 51 52 53

H =1!

2

!

1 1

1 "1

"

Each "particles'" spin is put into superposition.

Coin Step

!

1

2,

1

2

"!

1

2,!

1

2

"

Page 64: Quantum Processes in Graph Computing

48 49 5047 51 52 53

Shift Step

!

1

2,

1

2

"

The "particles" spinning left go left and the "particles" spinning right go right.

!

0,!1

2

"!

1

2, 0

"

!

1

2,

1

2

"!

1

2,!

1

2

"

Page 65: Quantum Processes in Graph Computing

48 49 5047 51 52 53

Shift Step

!

1

2,

1

2

" !

0,!1

2

"!

1

2, 0

"

Constructive Interference

Page 66: Quantum Processes in Graph Computing

0.0

0.1

0.2

0.3

0.4

0.5

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

48 49 5047 51 52 53

!

1

2,

1

2

" !

0,!1

2

"!

1

2, 0

"

!

1

2

"2

+ 02=

1

4

!

1

2

"2

+

!

1

2

"2

=1

202+

!

!

1

2

"2

=1

4

Wave Function to Probability Distribution

Page 67: Quantum Processes in Graph Computing

48 49 5047 51 52 53

Coin Step

H =1!

2

!

1 1

1 "1

"

The "particles'" spin is put into superposition.

!

1

2!

2,

1

2!

2

" !

!

1

2"

2,

1

2"

2

"!

1!

2, 0

"

Page 68: Quantum Processes in Graph Computing

48 49 5047 51 52 53

Shift Step

The "particles" spinning left go left and the "particles" spinning right go right.

!

1

2!

2, 0

" !

1!

2,

1

2!

2

" !

!

1

2"

2, 0

" !

0,1

2!

2

"

Destructive InterferenceConstructive Interference

Page 69: Quantum Processes in Graph Computing

Wave Function to Probability Distribution

0.0

0.1

0.2

0.3

0.4

0.5

0.6

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

48 49 5047 51 52 53

!

1

2!

2, 0

" !

1!

2,

1

2!

2

" !

!

1

2"

2, 0

" !

0,1

2!

2

"

!

1

2!

2

"2

+ 02=

1

802+

!

1

2!

2

"2

=1

8

!

!

1

2"

2

"2

+ 02=

1

8

!

1!

2

"2

+

!

1

2!

2

"2

=5

8

Page 70: Quantum Processes in Graph Computing

0.0

0.1

0.2

0.3

0.4

0.5

0.6

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

48 49 5047 51 52 53

Page 71: Quantum Processes in Graph Computing

0.0

0.1

0.2

0.3

0.4

0.5

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

48 49 5047 51 52 53

Page 72: Quantum Processes in Graph Computing

0.0

0.1

0.2

0.3

0.4

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

48 49 5047 51 52 53

Page 73: Quantum Processes in Graph Computing

0.00

0.05

0.10

0.15

0.20

0.25

0.30

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

48 49 5047 51 52 53

Page 74: Quantum Processes in Graph Computing

0.0

0.1

0.2

0.3

0.4

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

48 49 5047 51 52 53

Page 75: Quantum Processes in Graph Computing

0.0

0.1

0.2

0.3

0.4

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

48 49 5047 51 52 53

Page 76: Quantum Processes in Graph Computing

0.0

0.1

0.2

0.3

0.4

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

48 49 5047 51 52 53

Page 77: Quantum Processes in Graph Computing

0.0

0.1

0.2

0.3

0.4

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

48 49 5047 51 52 53

Page 78: Quantum Processes in Graph Computing

0.00

0.05

0.10

0.15

0.20

0.25

0.30

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

48 49 5047 51 52 53

Page 79: Quantum Processes in Graph Computing

0.00

0.05

0.10

0.15

0.20

0.25

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

48 49 5047 51 52 53

Page 80: Quantum Processes in Graph Computing

0.00

0.05

0.10

0.15

0.20

0.25

0.30

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

48 49 5047 51 52 53

Page 81: Quantum Processes in Graph Computing

0.0

0.1

0.2

0.3

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

48 49 5047 51 52 53

Page 82: Quantum Processes in Graph Computing

Fast forward to iteration 50.

Page 83: Quantum Processes in Graph Computing

0.00

0.05

0.10

0.15

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function to Probability Distribution

13 14 1512 16 17 18

Page 84: Quantum Processes in Graph Computing

0.00

0.05

0.10

0.15

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function is Perturbed by Light

13 14 1512 16 17 18

Page 85: Quantum Processes in Graph Computing

0.00

0.05

0.10

0.15

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function Collapse

13 14 1512 16 17 18

sample

Page 86: Quantum Processes in Graph Computing

Classical Particle

13 14 1512 16 17 18

[1, 0]

0.0

0.2

0.4

0.6

0.8

1.0

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Page 87: Quantum Processes in Graph Computing

0.00

0.05

0.10

0.15

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function Collapse

13 14 1512 16 17 18

Could have been this vertex.

Again, its a probability distribution.

Page 88: Quantum Processes in Graph Computing

0.00

0.05

0.10

0.15

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

Wave Function Collapse

13 14 1512 16 17 18

Could not be at this vertex because there is no wave energy at that vertex.

Page 89: Quantum Processes in Graph Computing

g.withSack([1,0],sackSum).V(50). repeat( sack(hadamard). union( sack(project).by(constant([1,0])).out('left'), sack(project).by(constant([0,1])).out('right') ) ).times(50). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

48 49 5047 51 52 53

Page 90: Quantum Processes in Graph Computing

48 49 5047 51 52 53

[1, 0]

g.withSack([1,0],sackSum).V(50). repeat( sack(hadamard). union( sack(project).by(constant([1,0])).out('left'), sack(project).by(constant([0,1])).out('right') ) ).times(50). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

Classical Initial Step

sackSum = { a,b -> [a[0] + b[0],a[1] + b[1]] }

Page 91: Quantum Processes in Graph Computing

hadamard = { a,b -> [(1/Math.sqrt(2)) * (a[0] + a[1]), (1/Math.sqrt(2)) * (a[0] - a[1])]}

g.withSack([1,0],sackSum).V(50). repeat( sack(hadamard). union( sack(project).by(constant([1,0])).out('left'), sack(project).by(constant([0,1])).out('right') ) ).times(50). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

Coin StepH =

1!

2

!

1 1

1 "1

"

48 49 5047 51 52 53

!

1!

2,

1!

2

"

Page 92: Quantum Processes in Graph Computing

project = { a,b -> [a[0] * b[0], a[1] * b[1]] }

g.withSack([1,0],sackSum).V(50). repeat( sack(hadamard). union( sack(project).by(constant([1,0])).out('left'), sack(project).by(constant([0,1])).out('right') ) ).times(50). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

Shift Step

48 49 5047 51 52 53

!

1!

2, 0

" !

0,1!

2

"

!

1!

2,

1!

2

"

Page 93: Quantum Processes in Graph Computing

g.withSack([1,0],sackSum).V(50). repeat( sack(hadamard). union( sack(project).by(constant([1,0])).out('left'), sack(project).by(constant([0,1])).out('right') ) ).times(50). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

Diffuse the wave function for 50 steps

48 49 5047 51 52 53

Page 94: Quantum Processes in Graph Computing

0.00

0.05

0.10

0.15

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

norm = { Math.pow(it.get()[0],2) + Math.pow(it.get()[1],2) }

g.withSack([1,0],sackSum).V(50). repeat( sack(hadamard). union( sack(project).by(constant([1,0])).out('left'), sack(project).by(constant([0,1])).out('right') ) ).times(50). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

Wave Function to Probability Distribution

13 14 1512 16 17 18

P (v) = |c0|2 + |c1|

2

Page 95: Quantum Processes in Graph Computing

g.withSack([1,0],sackSum).V(50). repeat( sack(hadamard). union( sack(project).by(constant([1,0])).out('left'), sack(project).by(constant([0,1])).out('right') ) ).times(50). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

Wave Function Collapse (Classical Particle Manifested)

13 14 1512 16 17 18

0.00

0.05

0.10

0.15

vertices

probability

0 4 8 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97

sample

Page 96: Quantum Processes in Graph Computing

g.withSack([1,0],sackSum).V(50). repeat( sack(hadamard). union( sack(project).by(constant([1,0])).out('left'), sack(project).by(constant([0,1])).out('right') ) ).times(50). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

A Quantum Walk on a Line with Gremlin

Page 97: Quantum Processes in Graph Computing

H =1!

2

!

1 1

1 "1

"

Y =1!

2

!

1 i

i 1

"

Balanced Unitary OperatorUnbalanced Unitary Operator

0.00

0.05

0.10

0.15

vertices

probability

0 6 12 20 28 36 44 52 60 68 76 84 92 100

0.00

0.02

0.04

0.06

0.08

0.10

vertices

probability

0 6 12 20 28 36 44 52 60 68 76 84 92 100

Any energy split operator can be used as long as:

1. The operation conserves the total energy in the system.2. It is possible to reverse the operation.

In general, a unitary operator is used to diffuse energy.

com

plex n

umbe

rs

i2

=!1

U · U!= I

no frictionno information

loss

Page 98: Quantum Processes in Graph Computing

The probability of seeing the particle at a particular vertex after 50 iterations for both a quantum walk and a classical walk.

Quantum walks can explore more graph in a shorter amount of time!

0.00

0.02

0.04

0.06

0.08

0.10

vertices

probability

0 6 12 20 28 36 44 52 60 68 76 84 92 100

!

50 = 7.07

50 = 50

!

n

n

Y =1!

2

!

1 i

i 1

"

Page 99: Quantum Processes in Graph Computing

Part 4

The Double Slit Experiment

Page 100: Quantum Processes in Graph Computing

Thomas Young (1773-1829)

Question

"Is light a wave or a particle?"

continuous light source double-slit screen photoelectric film

Page 101: Quantum Processes in Graph Computing

Thomas Young (1773-1829)

Hypothesis

"If light is a wave, then the film will show aconstructive and destructive interference pattern."

continuous light source double-slit screen photoelectric film

Page 102: Quantum Processes in Graph Computing

Thomas Young (1773-1829)

Result

"Light must be a wave because it has interference and refraction patterns like other natural waves such as

water waves."

continuous light source double-slit screen photoelectric film

Page 103: Quantum Processes in Graph Computing

G. I. Taylor (1886-1975)

single photon light source double-slit screen photoelectric film

Question

"What happens when only a single photon of light is emitted?"

The most indivisible amount of light.

Page 104: Quantum Processes in Graph Computing

G. I. Taylor (1886-1975)

single photon light source double-slit screen photoelectric film

Hypothesis

"The photons must act like bullets and hit directly behind the slits."

50% chance

50% chance

Page 105: Quantum Processes in Graph Computing

G. I. Taylor (1886-1975)

single photon light source double-slit screen photoelectric film

Experiment

"Shoot photon #1!"

Page 106: Quantum Processes in Graph Computing

G. I. Taylor (1886-1975)

single photon light source double-slit screen photoelectric film

Experiment

"Shoot photon #2!"

Page 107: Quantum Processes in Graph Computing

G. I. Taylor (1886-1975)

single photon light source double-slit screen photoelectric film

Experiment

"Shoot photon #3!"

Page 108: Quantum Processes in Graph Computing

G. I. Taylor (1886-1975)

single photon light source double-slit screen photoelectric film

Experiment

"Shoot photon #4!"

Page 109: Quantum Processes in Graph Computing

Fast forward to photon number 20.

Page 110: Quantum Processes in Graph Computing

G. I. Taylor (1886-1975)

single photon light source double-slit screen photoelectric film

Experiment

"Shoot photon #20!"

Page 111: Quantum Processes in Graph Computing

G. I. Taylor (1886-1975)

single photon light source double-slit screen photoelectric film

Result

"A single quantum of light (a photon) turns into a wave after emission and then is localized back to a

particle at the film based on the wave function."

Page 112: Quantum Processes in Graph Computing

single photon light source

double-slit screen

photoelectric film

Page 113: Quantum Processes in Graph Computing

Classical particle.

Page 114: Quantum Processes in Graph Computing

Particle becomes a wave.

Page 115: Quantum Processes in Graph Computing
Page 116: Quantum Processes in Graph Computing
Page 117: Quantum Processes in Graph Computing

"Particle" takes both options.

Page 118: Quantum Processes in Graph Computing
Page 119: Quantum Processes in Graph Computing

Wave interference.

Page 120: Quantum Processes in Graph Computing
Page 121: Quantum Processes in Graph Computing

Probability distribution generated from the wave function.

Page 122: Quantum Processes in Graph Computing

Wave function collapses back to a classical particle.

Page 123: Quantum Processes in Graph Computing

0.0e+00

1.0e-05

2.0e-05

screen vertices

probability

0 2 4 6 8 10 12 14 16 18 20Computed using Gremlin

Page 124: Quantum Processes in Graph Computing

g.withSack([0,0,1,0],sackSum).V(10). repeat( sack(grover). union( choose(out('left'), out('left').sack(project).by(constant([1,0,0,0])), identity().sack(project).by(constant([1,0,0,0])). sack(flip).by(constant("lr"))), choose(out('right'), out('right').sack(project).by(constant([0,1,0,0])), identity().sack(project).by(constant([0,1,0,0])). sack(flip).by(constant("lr"))), choose(out('up'), out('up').sack(project).by(constant([0,0,1,0])), identity().sack(project).by(constant([0,0,1,0])). sack(flip).by(constant("ud"))), choose(out('down'), out('down').sack(project).by(constant([0,0,0,1])), identity().sack(project).by(constant([0,0,0,1])). sack(flip).by(constant("ud"))))). times(22). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

Page 125: Quantum Processes in Graph Computing

g.withSack([0,0,1,0],sackSum).V(10). repeat( sack(grover). union( choose(out('left'), out('left').sack(project).by(constant([1,0,0,0])), identity().sack(project).by(constant([1,0,0,0])). sack(flip).by(constant("lr"))), choose(out('right'), out('right').sack(project).by(constant([0,1,0,0])), identity().sack(project).by(constant([0,1,0,0])). sack(flip).by(constant("lr"))), choose(out('up'), out('up').sack(project).by(constant([0,0,1,0])), identity().sack(project).by(constant([0,0,1,0])). sack(flip).by(constant("ud"))), choose(out('down'), out('down').sack(project).by(constant([0,0,0,1])), identity().sack(project).by(constant([0,0,0,1])). sack(flip).by(constant("ud"))))). times(22). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

Four degrees of freedom means you have a four entry energy vector.

Page 126: Quantum Processes in Graph Computing

g.withSack([0,0,1,0],sackSum).V(10). repeat( sack(grover). union( choose(out('left'), out('left').sack(project).by(constant([1,0,0,0])), identity().sack(project).by(constant([1,0,0,0])). sack(flip).by(constant("lr"))), choose(out('right'), out('right').sack(project).by(constant([0,1,0,0])), identity().sack(project).by(constant([0,1,0,0])). sack(flip).by(constant("lr"))), choose(out('up'), out('up').sack(project).by(constant([0,0,1,0])), identity().sack(project).by(constant([0,0,1,0])). sack(flip).by(constant("ud"))), choose(out('down'), out('down').sack(project).by(constant([0,0,0,1])), identity().sack(project).by(constant([0,0,0,1])). sack(flip).by(constant("ud"))))). times(22). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

Bottom-middle vertex. The single photon light source.

Page 127: Quantum Processes in Graph Computing

A 4x4 unitary operator called the Grover coin. R =1

2

!

"

"

#

!1 1 1 1

1 !1 1 1

1 1 !1 1

1 1 1 !1

$

%

%

&

g.withSack([0,0,1,0],sackSum).V(10). repeat( sack(grover). union( choose(out('left'), out('left').sack(project).by(constant([1,0,0,0])), identity().sack(project).by(constant([1,0,0,0])). sack(flip).by(constant("lr"))), choose(out('right'), out('right').sack(project).by(constant([0,1,0,0])), identity().sack(project).by(constant([0,1,0,0])). sack(flip).by(constant("lr"))), choose(out('up'), out('up').sack(project).by(constant([0,0,1,0])), identity().sack(project).by(constant([0,0,1,0])). sack(flip).by(constant("ud"))), choose(out('down'), out('down').sack(project).by(constant([0,0,0,1])), identity().sack(project).by(constant([0,0,0,1])). sack(flip).by(constant("ud"))))). times(22). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

Page 128: Quantum Processes in Graph Computing

g.withSack([0,0,1,0],sackSum).V(10). repeat( sack(grover). union( choose(out('left'), out('left').sack(project).by(constant([1,0,0,0])), identity().sack(project).by(constant([1,0,0,0])). sack(flip).by(constant("lr"))), choose(out('right'), out('right').sack(project).by(constant([0,1,0,0])), identity().sack(project).by(constant([0,1,0,0])). sack(flip).by(constant("lr"))), choose(out('up'), out('up').sack(project).by(constant([0,0,1,0])), identity().sack(project).by(constant([0,0,1,0])). sack(flip).by(constant("ud"))), choose(out('down'), out('down').sack(project).by(constant([0,0,0,1])), identity().sack(project).by(constant([0,0,0,1])). sack(flip).by(constant("ud"))))). times(22). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

Diffuse the wave in all four directions on the lattice.

Page 129: Quantum Processes in Graph Computing

g.withSack([0,0,1,0],sackSum).V(10). repeat( sack(grover). union( choose(out('left'), out('left').sack(project).by(constant([1,0,0,0])), identity().sack(project).by(constant([1,0,0,0])). sack(flip).by(constant("lr"))), choose(out('right'), out('right').sack(project).by(constant([0,1,0,0])), identity().sack(project).by(constant([0,1,0,0])). sack(flip).by(constant("lr"))), choose(out('up'), out('up').sack(project).by(constant([0,0,1,0])), identity().sack(project).by(constant([0,0,1,0])). sack(flip).by(constant("ud"))), choose(out('down'), out('down').sack(project).by(constant([0,0,0,1])), identity().sack(project).by(constant([0,0,0,1])). sack(flip).by(constant("ud"))))). times(22). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

If there is a "wall," reflect the energy back. No decoherence/friction.

The article presents the details

around reflection.

Page 130: Quantum Processes in Graph Computing

g.withSack([0,0,1,0],sackSum).V(10). repeat( sack(grover). union( choose(out('left'), out('left').sack(project).by(constant([1,0,0,0])), identity().sack(project).by(constant([1,0,0,0])). sack(flip).by(constant("lr"))), choose(out('right'), out('right').sack(project).by(constant([0,1,0,0])), identity().sack(project).by(constant([0,1,0,0])). sack(flip).by(constant("lr"))), choose(out('up'), out('up').sack(project).by(constant([0,0,1,0])), identity().sack(project).by(constant([0,0,1,0])). sack(flip).by(constant("ud"))), choose(out('down'), out('down').sack(project).by(constant([0,0,0,1])), identity().sack(project).by(constant([0,0,0,1])). sack(flip).by(constant("ud"))))). times(22). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

As before, generate the probability distribution and sample it (i.e. collapse the wave form).

Page 131: Quantum Processes in Graph Computing

g.withSack([0,0,1,0],sackSum).V(10). repeat( sack(grover). union( choose(out('left'), out('left').sack(project).by(constant([1,0,0,0])), identity().sack(project).by(constant([1,0,0,0])). sack(flip).by(constant("lr"))), choose(out('right'), out('right').sack(project).by(constant([0,1,0,0])), identity().sack(project).by(constant([0,1,0,0])). sack(flip).by(constant("lr"))), choose(out('up'), out('up').sack(project).by(constant([0,0,1,0])), identity().sack(project).by(constant([0,0,1,0])). sack(flip).by(constant("ud"))), choose(out('down'), out('down').sack(project).by(constant([0,0,0,1])), identity().sack(project).by(constant([0,0,0,1])). sack(flip).by(constant("ud"))))). times(22). group().by(id).by(sack().map(norm)). unfold().sample(1).by(values)

A Quantum Walk on a Bounded Lattice with Gremlin

Page 132: Quantum Processes in Graph Computing

Step 0

Page 133: Quantum Processes in Graph Computing

x-axis vertices

y-ax

is v

ertic

es

5

10

15

20

5 10 15 20

Step 22

Page 134: Quantum Processes in Graph Computing

0.0e+00

1.0e-05

2.0e-05

screen vertices

probability

0 2 4 6 8 10 12 14 16 18 20

x-axis vertices

y-ax

is v

ertic

es

5

10

15

20

5 10 15 20

Step 22

Page 135: Quantum Processes in Graph Computing

Part 5Quantum Computing

Page 136: Quantum Processes in Graph Computing

In classical computing, a bit is either 0 or 1.

0

[1, 0]

1

In quantum computing, a qubit can be 0, 1, or a superposition of both.

0

[0, 1]

1

!

1!

2,"

1!

2

"

Page 137: Quantum Processes in Graph Computing

NOT

In classical computing, a gate takes a {0,1}* and outputs {0,1}*.

0 1

In quantum computing, a quantum gate takes a superposition of {0,1}* and outputs a superposition of {0,1}*.

NOT

X =

!

0 1

1 0

"

!

1!

2,"

1!

2

" !

!

1"

2,

1"

2

"

f(0)!

1

f(0,1)!

1,0

Two f

uncti

on ev

aluati

ons f

or the

cost

of on

e!

Page 138: Quantum Processes in Graph Computing

U

Every quantum gate is a unitary operator.

U · U!= I

Not all gates have to be the same operator.

YH

H =1!

2

!

1 1

1 "1

"

Y =1!

2

!

1 i

i 1

"

H Y RH

Gates are connected by "wires."

R =1

2

!

"

"

#

!1 1 1 1

1 !1 1 1

1 1 !1 1

1 1 1 !1

$

%

%

&

R

2-qubits!

Its all ju

st vertic

es and edges!

Page 139: Quantum Processes in Graph Computing

A quantum algorithm (circuit) can evaluate all possible inputs at once.bre

adth-

first s

earch

depth

-first

searc

h

The algorithm's purpose is to guide the wave function to yield the correct answer to the problem with a high-probability (near 100%) at

the time of sampling (i.e. wave function collapse).

5-qubit register, where each qubit is both a 0 and 1 (thus, all 32 possible states at once).

1 0 1 0 0

We can never observe a superposition of outputs. Thus, our quantum algorithms must ensure wave collapse to the correct classical state.

* Read about the pilot-wave interpretation of quantum mechanics.

Breadth-first memory requirements not needed!* Read about the multi-world interpretation of quantum mechanics.

Depth-first speed enabled!

Page 140: Quantum Processes in Graph Computing

bread

th-firs

t sea

rch

depth

-first

searc

h

1 0 1 0 0

0.030

1

0

1

All 32 states/values exist simultaneously.

Only one state/value can exist at observation.

1/320 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

25

=32

Total wave energy is split equally amongst all states/values.If the wave function collapses at this point in time, only one number (0-31) will manifest itself in reality with each being equally likely.

A quantum algorithm leverages simultaneous states, but can ultimately only yield one output state (a collapsed wave).Thus, if you don't want a random answer, the algorithm must focus the wave energy on the correct solution.

Waves are controlled via constructive and destructive interference as the various parallel computations can interact with one another.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

1 0 1 0 0

Page 141: Quantum Processes in Graph Computing

+

Quantum Circuit

Graph

Quantum Wave Function

Traversal

Quantum Graph Computing

Structure Process

U

U

U

Page 142: Quantum Processes in Graph Computing

Fin.

Rodriguez, M.A., Watkins, J.H., "Quantum Walks with Gremlin," GraphDay '16, pp. 1-16, Austin, Texas, January 2016. http://arxiv.org/abs/1511.06278