cellular automata for pathfinding

120
Cellular Automata for Pathfinding A Fault tolerant, Parallelizable incremental approach for real time environments Steve Wilson

Upload: steve-wilson

Post on 14-Apr-2017

324 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Cellular Automata for Pathfinding

Cellular Automata for Pathfinding

A Fault tolerant, Parallelizable incremental approach for real time environments

Steve Wilson

Page 2: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Over view:

What is a cellular automataHow it is related to other automata

What is path finding Other approaches to pathfindingWhy a new method ?The cellular approachPros and Cons of using cellular automata

Page 3: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of “automata”

Page 4: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of “automata” or “machines”

Page 5: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machine

Page 6: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machine

One or more states

Page 7: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machine

One or more statesTransition rules

Page 8: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machine

One or more statesTransition rules Input

Page 9: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automata

Page 10: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automata

One or more states

Page 11: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automata

One or more statesTransition rules

Page 12: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automata

One or more statesTransition rulesInput

Page 13: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automata

One or more statesTransition rulesInputStack

Page 14: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automata

Turing machine

Page 15: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automata

Turing machineOne or more states

Page 16: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automata

Turing machineOne or more statesTransition rules

Page 17: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automata

Turing machineOne or more statesTransition rulesTape

Page 18: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automataTuring machine

Cellular Automata

Page 19: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automataTuring machine

Cellular AutomataTwo or more states

Page 20: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automataTuring machine

Cellular AutomataTwo or more statesTransition rules

Page 21: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Types of automataFinite state machinePush down automataTuring machine

Cellular AutomataTwo or more statesTransition rulesNeighbor states

Page 22: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Basically

Page 23: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Basically a Cellular automata is a collection of connected finite state machines

Page 24: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Basically a Cellular automata is a collection of connected finite state machinesSubtypes of cellular automata

Page 25: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Basically a Cellular automata is a collection of connected finite state machinesSubtypes of cellular automata

Graph

Page 26: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Basically a Cellular automata is a collection of connected finite state machinesSubtypes of cellular automata

GraphCells are connected by “edges”

Page 27: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Basically a Cellular automata is a collection of connected finite state machinesSubtypes of cellular automata

GraphGrid

Page 28: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Basically a Cellular automata is a collection of connected finite state machinesSubtypes of cellular automata

GraphGrid

Cells are arranged uniformly in a patternand connected spatially

Page 29: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Basically a Cellular automata is a collection of connected finite state machinesSubtypes of cellular automata

GraphGridSubdivision

Page 30: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Basically a Cellular automata is a collection of connected finite state machinesSubtypes of cellular automata

GraphGridSubdivision

Used extensively in modeling, cells are connected spatially in a non-uniform manner

Page 31: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Basically a Cellular automata is a collection of connected finite state machinesSubtypes of cellular automata

GraphGridSubdivisionSynchronized

Page 32: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Basically a Cellular automata is a collection of connected finite state machinesSubtypes of cellular automata

GraphGridSubdivisionSynchronized

Cells update at the same time based on the previous state

Page 33: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

Basically a Cellular automata is a collection of connected finite state machinesSubtypes of cellular automata

GraphGridSubdivisionSynchronizedConvergent

Does the automata settle down for all starting states

Page 34: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is a cellular automata:

The Most famous cellular is Conway’s Game of Life

epic game of life

Page 35: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is path finding:

Path finding is the simply finding one or more optimal routes between two or more points while avoiding obstacles

Page 36: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is path finding:

Path finding is the simply finding one or more optimal routes between two or more points while avoiding obstaclesUsed in:

Page 37: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is path finding:

Path finding is the simply finding one or more optimal route between two or more points while avoiding obstaclesUsed in:

Design (circuit boards, chips, plumbing)

Page 38: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is path finding:

Path finding is the simply finding one or more optimal route between two or more points while avoiding obstaclesUsed in:

Design (circuit boards, chips, plumbing) Analysis (critical path)

Page 39: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:What is path finding:

Path finding is the simply finding one or more optimal route between two or more points while avoiding obstaclesUsed in:

Design (circuit boards, chips, plumbing) Analysis (critical path)Entertainment (goal seeking)

Page 40: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Page 41: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth first

Page 42: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBasically at each branch you “remember” where you were, and which branch you took

Page 43: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBasically at each branch you “remember” where you were, and which branch you tookWhen you reach a dead end you go back to the last branch and take a different path

Page 44: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBasically at each branch you “remember” where you were, and which branch you tookWhen you reach a dead end you go back to the last branch and take a different pathIf the maze has loops or “cycles” depth first can end up going in circles

Page 45: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBasically at each branch you “remember” where you were, and which branch you tookWhen you reach a dead end you go back to the last branch and take a different pathIf the maze has loops or “cycles” depth first can end up going in circlesThis can be prevented by remembering everywhere you’ve been

Page 46: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBasically at each branch you “remember” where you were, and which branch you tookWhen you reach a dead end you go back to the last branch and take a different pathIf the maze has loops or “cycles” depth first can end up going in circlesPrevented by remembering everywhere you’ve beenEasy to implement recursively

Page 47: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also depth known first

Page 48: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth first

Page 49: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth first

Page 50: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth first

Page 51: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBreadth first

Page 52: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBreadth first

Again remembering each branch

Page 53: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBreadth first

Again remembering each branchExcept at each new intersection, go back to the untried path closest to the starting point

Page 54: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBreadth first

Page 55: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBreadth first

Page 56: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBreadth first

Page 57: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBreadth first

Page 58: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBreadth first

Page 59: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBreadth first

Page 60: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBreadth first

Page 61: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

Backtracking also known as depth firstBreadth firstA* (A star)

At each intersection select the “best” untried path (based on a heuristic)

Page 62: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

A* (A star)

Page 63: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

A* (A star)

Page 64: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

A* (A star)

Page 65: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Other approaches to pathfinding:

A* (A star)

Page 66: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Shortcomings of existing methods:

Page 67: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Shortcomings of existing methods:

They require both a start and endpoint

Page 68: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Shortcomings of existing methods:

They require both a start and endpointPotentially slow if the maze is large or there are many entities finding paths at the same time

Page 69: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Shortcomings of existing methods:

They require both a start and endpointPotentially slow if the maze is large or there are many entities finding paths at the same timeEach entity has a separate path multiplying the amount of memory needed by the number of entities

Page 70: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Shortcomings of existing methods:

They require both a start and endpointPotentially slow if the maze is large or there are many entities finding paths at the same timeEach entity has a separate path multiplying the amount of memory needed by the number of entitiesNot incremental, partial solutions don’t lead to meaningful behavior

Page 71: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Shortcomings of existing methods:

They require both a start and endpointPotentially slow if the maze is large or there are many entities finding paths at the same timeEach entity has a separate path multiplying the amount of memory needed by the number of entitiesNot incremental, partial solutions partial solutions don’t lead to meaningful behaviorNot easily distributed

Page 72: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Shortcomings of existing methods:

They require both a start and endpointPotentially slow if the maze is large or there are many entities finding paths at the same timeEach entity has a separate path multiplying the amount of memory needed by the number of entitiesNot incremental, partial solutions partial solutions don’t lead to meaningful behaviorNot easily distributed each entity requires a large amount of information

Page 73: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Why a new method?:

Page 74: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Why a new method?:

Programmers love to reinvent the wheel

Page 75: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Why a new method?:

Programmers love to reinvent the wheelThe new algorithm might be better

Page 76: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Why a new method?:

Programmers love to reinvent the wheelThe new algorithm might be betterTo address shortcomings in existing methods

Page 77: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Why a new method?:

Programmers love to reinvent the wheelThe new algorithm might be betterTo address shortcomings in existing methodsTo learn something

Page 78: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Why a new method?:

Programmers love to reinvent the wheelThe new algorithm might be betterTo address shortcomings in existing methodsTo learn something (life long learning is important)

Page 79: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

Page 80: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The states of the automata are as follows

Page 81: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The states of the automata are as follows:‘W’ the cell is a wall

Page 82: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The states of the automata are as follows:‘W’ the cell is a wall‘G’ the cell is a goal (there can be multiple goals)

Page 83: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The states of the automata are as follows:‘W’ the cell is a wall‘G’ the cell is a goal1…10,000 the cell is passable

Page 84: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The states of the automata are as follows:‘W’ the cell is a wall‘G’ the cell is a goal1…10,000 the cell is passable

The transitions are:

Page 85: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The states of the automata are as follows:‘W’ the cell is a wall‘G’ the cell is a goal1…10,000 the cell is passable

The transitions are:‘W’ -> ‘W’ Walls don’t change

Page 86: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The states of the automata are as follows:‘W’ the cell is a wall‘G’ the cell is a goal1…10,000 the cell is passable

The transitions are:‘W’ -> ‘W’‘G’ -> ‘G’ Goals don’t change

Page 87: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The states of the automata are as follows:‘W’ the cell is a wall‘G’ the cell is a goal1…10,000 the cell is passable

The transitions are:‘W’ -> ‘W’‘G’ -> ‘G’1…10,000 -> one more than its lowest value neighbor. Where ‘G’ has a value of zero

Page 88: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The passages are initialized to a random passage value (in the demo initialized to 1 for clarity)

Page 89: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The passages are initialized to a random passage value The walls are initialized to ‘W’

Page 90: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The passages are initialized to a random passage value The walls are initialized to ‘W’The goals are initialized to ‘G’

Page 91: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The passages are initialized to a random passage value The walls are initialized to ‘W’The goals are initialized to ‘G’The automata is stepped either synchronously or asynchronously

Page 92: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

The passages are initialized to a random passage value The walls are initialized to ‘W’The goals are initialized to ‘G’The automata is stepped either synchronously or asynchronously Each entity can simply move to a neighboring cell with a lower value, going “downhill” to player

Page 93: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

A simple example

W W W W W WW G 9 7 1 WW W W W W W

Page 94: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

A simple example

W W W W W WW G 1 2 8 WW W W W W W

Page 95: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

A simple example

W W W W W WW G 1 2 3 WW W W W W W

Page 96: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

A more complicated example

W W W W W WW 1 9 7 1 WW 7 W 5 W WW 8 5 3 G WW W W W W W

Page 97: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

A more complicated example

W W W W W WW 8 2 2 8 WW 2 W 4 W WW 6 4 1 G WW W W W W W

Page 98: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

A more complicated example

W W W W W WW 3 3 3 3 WW 7 W 2 W WW 5 2 1 G WW W W W W W

Page 99: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

A more complicated example

W W W W W WW 4 4 3 4 WW 4 W 2 W WW 8 2 1 G WW W W W W W

Page 100: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

A more complicated example

W W W W W WW 5 4 3 4 WW 4 W 2 W WW 8 2 1 G WW W W W W W

Page 101: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

A more complicated example

W W W W W WW 5 4 3 4 WW 4 W 2 W WW 8 2 1 G WW W W W W W

Page 102: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:How does this method work?:

Demo Here:

Page 103: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros and cons:

Page 104: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros :

The cellular automata can be shared by entities

Page 105: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros:

The cellular automata can be shared by entitiesEasily distributed

Page 106: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros:

The cellular automata can be shared by entitiesEasily distributed

Each cell only needs to know about its closest neighbors

Page 107: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros:

The cellular automata can be shared by entitiesEasily distributed

Each cell only needs to know about its closest neighborsThe cells don’t need to update synchronously

Page 108: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros:

The cellular automata can be shared by entitiesEasily distributedIncremental the automata can be iterated between frames

Page 109: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros:

The cellular automata can be shared by entitiesEasily distributedIncremental the automata can be iterated between frames

Entities will naturally move out of dead ends even before the path information fully propagates

Page 110: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros:

The cellular automata can be shared by entitiesEasily distributedIncremental the automata can be iterated between framesFault tolerant

Page 111: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros:

The cellular automata can be shared by entitiesEasily distributedIncremental the automata can be iterated between framesFault tolerant

A passage can be blocked to reflect changes in the maze

Page 112: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros:

The cellular automata can be shared by entitiesEasily distributedIncremental the automata can be iterated between framesFault tolerant

A passage can be blocked to reflect changes in the mazeGoals can be moved

Page 113: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros:

The cellular automata can be shared by entitiesEasily distributedIncremental the automata can be iterated between framesFault tolerant

If a passage is blocked, or the goal movesGoals can be movedContinue to use the existing automata as it updates

Page 114: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros:

The cellular automata can be shared by entitiesEasily distributedIncremental the automata can be iterated between framesFault tolerant

If a passage is blocked, or the goal movesGoals can be movedContinue to use the existing automata as it updates

Page 115: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Pros:

The cellular automata can be shared by entitiesEasily distributedIncremental the automata can be iterated between framesFault tolerant

If a passage is blocked, or the goal movesContinue to use the existing automata as it updates

Unreachable areas are easily detected

Page 116: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Cons:

Page 117: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Cons:

Requires enough memory to hold the search space

Page 118: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:Cons:

Requires enough memory to hold the search spaceFor a single entity takes more processing than other methods

Page 119: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:In closing:

This Cellular Automata provides an incremental, fault tolerant, performant pathfinding solution

Page 120: Cellular Automata for Pathfinding

Cellular Automata for pathfinding:References:

Ascani, E (2011, October 4). Epic Game of Life. Retrieved April 4, 2016, from https://www.youtube.com/watch?v=C2vgICfQawE Codd, E. F. (1968). Cellular automata [Http://dl.acm.org/citation.cfm?id=1098682]. New York: Academic Press. Retrieved April 4, 2016. DeAngelis, M. (2016, February 29). Cat Maze Disguised as Bookshelves. Retrieved April 4, 2016, from http://www.cluttermagazine.com/news/2016/02/cat-maze-disguised-bookshelves Gardner, M. (1983). Wheels, life, and other mathematical amusements (Chp 20-22). New York: W.H. Freeman. Levy, S. (1993). Artificial life: A report from the frontier where computers meet biology. New York: Vintage Books. Pajot, T. (n.d.). Printed Circuit Board. Retrieved April 4, 2016, from http://www.123rf.com/photo_10607345_printed-circuit-board.html