Notes on assembly verification in the aTAM Days 22, 24 and 25 of Comp Sci 480.

Slides:



Advertisements
Similar presentations
Dana Nau: Lecture slides for Automated Planning Licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License:
Advertisements

UIUC CS 497: Section EA Lecture #2 Reasoning in Artificial Intelligence Professor: Eyal Amir Spring Semester 2004.
Propositional and First Order Reasoning. Terminology Propositional variable: boolean variable (p) Literal: propositional variable or its negation p 
Counting the bits Analysis of Algorithms Will it run on a larger problem? When will it fail?
CPSC 422, Lecture 21Slide 1 Intelligent Systems (AI-2) Computer Science cpsc422, Lecture 21 Mar, 4, 2015 Slide credit: some slides adapted from Stuart.
Department of Computer Science & Engineering
The Theory of NP-Completeness
1 NP-Complete Problems. 2 We discuss some hard problems:  how hard? (computational complexity)  what makes them hard?  any solutions? Definitions 
© The McGraw-Hill Companies, Inc., Chapter 8 The Theory of NP-Completeness.
1 Introduction to Computability Theory Lecture15: Reductions Prof. Amos Israeli.
1 Introduction to Computability Theory Lecture12: Reductions Prof. Amos Israeli.
1 Boolean Satisfiability in Electronic Design Automation (EDA ) By Kunal P. Ganeshpure.
1 CSE 417: Algorithms and Computational Complexity Winter 2001 Lecture 21 Instructor: Paul Beame.
NP-Complete Problems Reading Material: Chapter 10 Sections 1, 2, 3, and 4 only.
The Theory of NP-Completeness
NP-Complete Problems Problems in Computer Science are classified into
Methods of Proof Chapter 7, second half.
Analysis of Algorithms CS 477/677
1 Discrete Structures CS 280 Example application of probability: MAX 3-SAT.
Complexity ©D.Moshkovitz 1 Paths On the Reasonability of Finding Paths in Graphs.
CS 267: Automated Verification Lecture 13: Bounded Model Checking Instructor: Tevfik Bultan.
PSPACE-Completeness Section 8.3 Giorgi Japaridze Theory of Computability.
Themes of Presentations Rule-based systems/expert systems (Catie) Software Engineering (Khansiri) Fuzzy Logic (Mark) Configuration Systems (Sudhan) *
The Theory of NP-Completeness 1. What is NP-completeness? Consider the circuit satisfiability problem Difficult to answer the decision problem in polynomial.
1 The Theory of NP-Completeness 2012/11/6 P: the class of problems which can be solved by a deterministic polynomial algorithm. NP : the class of decision.
1 Growth of Functions CS 202 Epp, section ??? Aaron Bloomfield.
Tonga Institute of Higher Education Design and Analysis of Algorithms IT 254 Lecture 8: Complexity Theory.
February 18, 2015CS21 Lecture 181 CS21 Decidability and Tractability Lecture 18 February 18, 2015.
CHAPTERS 7, 8 Oliver Schulte Logical Inference: Through Proof to Truth.
Computational Complexity Theory Lecture 2: Reductions, NP-completeness, Cook-Levin theorem Indian Institute of Science.
MCS 312: NP Completeness and Approximation algorthms Instructor Neelima Gupta
Cs3102: Theory of Computation Class 24: NP-Completeness Spring 2010 University of Virginia David Evans.
Advanced Topics in Propositional Logic Chapter 17 Language, Proof and Logic.
Week 10Complexity of Algorithms1 Hard Computational Problems Some computational problems are hard Despite a numerous attempts we do not know any efficient.
NP-COMPLETENESS PRESENTED BY TUSHAR KUMAR J. RITESH BAGGA.
EMIS 8373: Integer Programming NP-Complete Problems updated 21 April 2009.
Notes for self-assembly of thin rectangles Days 19, 20 and 21 of Comp Sci 480.
Notes on the two-handed assembly model (2HAM) Days 38 and 39 of Comp Sci 480.
1 The Theory of NP-Completeness 2 Cook ’ s Theorem (1971) Prof. Cook Toronto U. Receiving Turing Award (1982) Discussing difficult problems: worst case.
Notes on local determinism Days 12, 13 and 14 of Comp Sci 480.
LDK R Logics for Data and Knowledge Representation Propositional Logic: Reasoning First version by Alessandro Agostini and Fausto Giunchiglia Second version.
NP-Complete Problems. Running Time v.s. Input Size Concern with problems whose complexity may be described by exponential functions. Tractable problems.
NP-COMPLETE PROBLEMS. Admin  Two more assignments…  No office hours on tomorrow.
Big Oh Notation Greek letter Omicron (Ο) is used to denote the limit of asymptotic growth of an algorithm If algorithm processing time grows linearly with.
Notes on temperature programming: lines and scaled shapes Days 28, 29 and 30 of Comp Sci 480.
CS 3343: Analysis of Algorithms Lecture 25: P and NP Some slides courtesy of Carola Wenk.
CSCI 3130: Formal languages and automata theory Andrej Bogdanov The Chinese University of Hong Kong The Cook-Levin.
CS6045: Advanced Algorithms NP Completeness. NP-Completeness Some problems are intractable: as they grow large, we are unable to solve them in reasonable.
Notes for temperature 1 self- assembly Days 15, 16, 17 and 18 of Comp Sci 480.
Notes on temperature programming: unique assembly verification Days 30 and 31 of Comp Sci 480.
Chapter 11 Introduction to Computational Complexity Copyright © 2011 The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 1.
NPC.
1 Ch 10 - NP-completeness Tractable and intractable problems Decision/Optimization problems Deterministic/NonDeterministic algorithms Classes P and NP.
Knowledge Repn. & Reasoning Lecture #9: Propositional Logic UIUC CS 498: Section EA Professor: Eyal Amir Fall Semester 2005.
Dana Nau: Lecture slides for Automated Planning Licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License:
1 The Theory of NP-Completeness 2 Review: Finding lower bound by problem transformation Problem X reduces to problem Y (X  Y ) iff X can be solved by.
Computability Examples. Reducibility. NP completeness. Homework: Find other examples of NP complete problems.
The NP class. NP-completeness Lecture2. The NP-class The NP class is a class that contains all the problems that can be decided by a Non-Deterministic.
CompSci Today’s Topics Computer Science Noncomputability Upcoming Special Topic: Enabled by Computer -- Decoding the Human Genome Reading Great.
TU/e Algorithms (2IL15) – Lecture 10 1 NP-Completeness, II.
The NP class. NP-completeness
Chapter 10 NP-Complete Problems.
NP-Completeness Yin Tat Lee
Propositional Calculus: Boolean Algebra and Simplification
ICS 353: Design and Analysis of Algorithms
NP-Complete Problems.
Combinatorial Optimization Problems in Self-Assembly (Given a shape, output an “efficient” tile-system for assembling it)
NP-Completeness Yin Tat Lee
Notes on temperature programming
Instructor: Aaron Roth
Presentation transcript:

Notes on assembly verification in the aTAM Days 22, 24 and 25 of Comp Sci 480

Introduction We are going to study algorithms that verify tile sets E.g., write an algorithm that determines if a particular is uniquely produced by a tile set Critical resource: running time Important problems: design of self- assembly simulators

Warm up Problem 0 (Assembly verification = AV) –Input: A temperature τ and an assembly A Tile set inferred from the assembly A –Output: Yes if A is producible, and No otherwise Design an algorithm that solves problem 0 as efficiently as possible Is every assembly producible? –If yes, then running time would be O(1) –Not every assembly is producible

The algorithm Algorithm Greedy-Grow (A, τ) 1.Start with A' = A(0,0) // (0,0) always has the seed 2.While there is a site (x,y) with A(x,y) = t and A'(x,y) = empty such that t can be added to A' at (x,y), add it. 3.If A ≠ A', then output "A is not producible" 4.Else output "A is producible" Running time: ??? O(|A| 2 ) –For each tile addition, the perimeter of A' is searched O(|A|) –Don’t search the perimeter over and over again –Maintain a list of all sites at which a tile could be placed immediately |A| tile additions O(1) amount of work per tile addition

Easy and hard problems Some problems are “easy”, some are “hard” We’ll classify problems as “easy” if one can exhibit an algorithm that solves it with running time O(n 4 ), where n is the size of the input A “hard” problem is such that, no matter how clever the programmer, any algorithm that solves it has running time Ω(2 n )

Easy problem example Input: a list of numbers x 0, x 1, …, x n-1 and a number x Output: Yes if x = x i for some i = 0, …, n-1 and No otherwise Algorithm: linear search Running time O(n) (worst, best and average case)

Another easy problem Input: a temperature τ and an assembly A –Tile set inferred from the assembly A Output: Yes if A is producible and No otherwise Algorithm: use the Greedy-Grow algorithm –Running time is O(n), where n = |A| (size of input)

Hard problem example Notation: –x V y = “x or y” //x || y –x Λ y = “x and y”//x && y –¬x = “not x”//!x Input: –n boolean variables x 0, …, x n-1, –m clauses C j Disjunction (“or”) of three boolean literals –Boolean literal = a boolean variable, OR its negation That is, C j = (l p V l q V l r ), where 0 ≤ p < q < r ≤ n-1 and l p = x p or ¬x p, l q = x q or ¬x q, l r = x r or ¬x r –A formula φ = C 0 Λ C 1 Λ ∙∙∙ Λ C m-1 Conjunction (“and”) of the clauses Output: Yes if there is a way to assign boolean values to the variables x 0, … x n-1 so as to make φ true and No otherwise Example: φ = (x 0 V ¬x 1 V ¬x 2 ) Λ (x 0 V x 1 V x 3 ) –Output: Yes (setting x 0 to TRUE satisfies the formula) This problem is probably very hard –Not proven!

3SAT The previous problem is usually called “3SAT” Like I said, it is probably a very difficult problem for a computer program to solve Most likely: any algorithm you write that solves 3SAT (finds a satisfying assignment, or reports that one doesn’t exist) will run in time Ω(c n ), where c > 1 –Try it!

3SAT – What not to do This doesn’t work… For a given 3SAT formula φ… –Enumerate all possible True / False assignments for the n variables. –If one True / False assignment satisfies φ, then output Yes, otherwise output No This algorithm has running time… –?–? –O(2 n )

3SAT is useful We will use 3SAT to prove that certain problems in self-assembly are hard

Hw5 Problem 1: self-assembly of “Pacman” shapes What defines a thin Nxk Pacman shape? –N must be odd –k < log N / (log log N - log log log N) –Row 0 is 2k points wide –Row N/2 is k points wide –Row N-1 is 2k points wide –For 0 < i ≤ N/2, row i can be no wider than row i-1 –For N/2 < i ≤ N-1, row i-1 can be no wider than row i

Pacman example Nxk Pacman shape, where N = 19, and k = 5 (not thin, but oh well) Must be 5 tiles wide Must be 10 tiles wide Seed tile, placed at the origin If T uniquely produces some Nxk thin Pacman shape, then |T| ≥ ??? Note: for particular N,k values, there are many thin Pacman shapes.

3SAT warm up Is the following formula “satisfiable”? –I.e., can you set the variables so that the formula is true? φ = (x 0 V ¬x 2 V ¬x 4 ) Λ (¬x 1 V x 3 V x 5 ) Λ (x 2 V ¬x 3 V x 5 ) Λ (¬x 4 V ¬x 5 V x 7 ) Λ (¬x 2 V ¬x 5 V ¬x 6 ) Λ (¬x 0 V x 3 V ¬x 7 )

Two problems Problem 1 (Unique assembly verification = UAV) –Input: A temperature τ and an assembly A Tile set inferred from the assembly A –Output: YES if is A uniquely produced and NO otherwise Problem 2 (Unique shape verification = USV) –Input: a tile set T, a temperature τ and a shape X –Output: YES if X is uniquely produced by T and NO otherwise Design algorithms to solve these problems (one algorithm per problem) What are the running time complexities? Which one is easy? Which one is hard?

Algorithm for UAV Algorithm Unique-Assembly (A, T, τ) // Adleman, et. al., Let A' = Greedy-Grow(A, τ) If A ≠ A', then A is not produced. 2.For all non-empty sites (x,y), test whether any tile t can be added at an adjacent site. If YES, then A is not terminal. 3.For all non-empty sites (x,y), let A/(x,y) be the assembly A with the tile at (x,y) removed. Let A'' = Greedy-Grow(A/(x,y), τ). If a tile t ≠ A(x,y) can be added to A'' at (x,y), then A is not uniquely produced. 4.If A does not fail any of the above three tests, then A is uniquely produced and terminal.

Algorithm Unique-Assembly (A, T, τ) // Adleman, et. al., Let A' = Greedy-Grow(A, τ) If A ≠ A', then A is not produced. 2.For all non-empty sites (x,y), test whether any tile t can be added at an adjacent site. If YES, then A is not terminal. 3.For all non-empty sites (x,y), let A/(x,y) be the assembly A with the tile at (x,y) removed. Let A'' = Greedy-Grow(A/(x,y), τ). If a tile t ≠ A(x,y) can be added to A'' at (x,y), then A is not uniquely produced. 4.If A does not fail any of the above three tests, then A is uniquely produced and terminal. Is this step necessary? YES! Stable, but not producible at temperature 2… Algorithm for UAV

Running time complexity What is the running time for the Unique- Assembly algorithm? Step 1 (is producible?): O(|A|) Step 2 (is terminal?): O(|A|*|T|) Step 3 (checking locations): O(|A| 2 ) –|A| calls to Greedy-Grow Running time: O(|A|*|T| + |A| 2 )

A special case If the temperature is 1, then we can do much better than O(|A|*|T| + |A| 2 ) Doty gives a special algorithm for verifying unique production at temperature 1 –Running time: O(|A|*log |T|) –Proven in ~2012 –Details omitted See:

An observation The unique assembly verification algorithms also work in 3D We’ll be reminded of this later…

A really difficult problem How do we design an algorithm for USV? The problem: –In USV, a tile set may produce exponentially many assemblies that all have the same shape Can’t do a brute-force verification over all possible assemblies

A different approach Don’t try to solve USV directly by designing an algorithm that can determine if a tile set uniquely produces a shape Use the USV problem to solve another (probably) hard problem… 3SAT!

Solve 3SAT with self-assembly Let φ be a 3SAT formula with n variables and m clauses Let’s design a tile set T φ that “solves” the 3SAT formula φ Basic idea (two phases): –T φ will generate all possible True/False assignments to the n variables –For each True/False assignment of the n variables, T φ will determine whether or not that assignment solves φ (the assembly in which this happens should be rectangular) –If φ is NOT solved by some True/False assignment, don’t place a tile in the corner (the resulting shape is NOT a rectangle)

Something from last time Can we prove the following “easily”?: log log N < log N / (log log N – log log log N) Easy, once you realize this: log(a / b) = log a - log b log N / (log log N – log log log N) = log N / log (log N / log log N) > log N / (log N / log log N) = log N * log log N / log N = log log N

More efficient algorithm for UAV? Algorithm Unique-Assembly (A, T, τ) // Adleman, et. al., Let A' = Greedy-Grow(A, τ) If A ≠ A', then A is not produced. 2.For all non-empty sites (x,y), test whether any tile t can be added at an adjacent site. If YES, then A is not terminal. 3.Let A' be an empty assembly. While there is a site (x,y) with A(x,y) = t and A'(x,y) = empty such that t can be added to A' at (x,y), add it. If at any point in this process, two tile types could be placed at (x,y), then A is not uniquely produced. 4.If A does not fail any of the above three tests, then A is uniquely produced and terminal.

More efficient algorithm for UAV? Algorithm Unique-Assembly (A, T, τ) // Adleman, et. al., Let A' = Greedy-Grow(A, τ) If A ≠ A', then A is not produced. 2.For all non-empty sites (x,y), test whether any tile t can be added at an adjacent site. If YES, then A is not terminal. 3.Let A' be an empty assembly. While there is a site (x,y) with A(x,y) = t and A'(x,y) = empty such that t can be added to A' at (x,y), add it. If at any point in this process, two tile types could be placed at (x,y), then A is not uniquely produced. 4.If A does not fail any of the above three tests, then A is uniquely produced and terminal. Running time: ?

More efficient algorithm for UAV? Algorithm Unique-Assembly (A, T, τ) // Adleman, et. al., Let A' = Greedy-Grow(A, τ) If A ≠ A', then A is not produced. 2.For all non-empty sites (x,y), test whether any tile t can be added at an adjacent site. If YES, then A is not terminal. 3.Let A' be an empty assembly. While there is a site (x,y) with A(x,y) = t and A'(x,y) = empty such that t can be added to A' at (x,y), add it. If at any point in this process, two tile types could be placed at (x,y), then A is not uniquely produced. 4.If A does not fail any of the above three tests, then A is uniquely produced and terminal. Running time: O(|A|) + O(|A|*|T|) + O(|A|) = O(|A|*|T|) Does it work?

NO! S u vw S12 3u vwxy Counter-example… Suppose we have a tile set that can produce two assemblies like this… The previously shown (efficient) algorithm for UAV would sometimes say that either of these assemblies is uniquely produced

The coolest tile set in the world…

x0x0 x0x0 x0x0 * x0x0 BL x1x1 x n-1 X n-1 x n-1 TL * Variable tiles – one for each of the n variables * * C0C0 BL C0C0 C1C1 C0C0 C0C0 C m-1 BRC m-1 * BR * SAT T * * TLT T OK TT F TF F FF F FF 0 * * xixi * 0x i 1 * * xixi 1x i OK CjCj 0x i If x i = 0  C j true OK CjCj 1x i If x i = 1  C j true OK CjCj CjCj 1x i Otherwise CjCj CjCj CjCj 0x i Otherwise CjCj OK 0x i OK 1x i OK CjCj CjCj 1x i 0x i

x0x0 x0x0 x0x0 * x0x0 BL x1x1 x n-1 X n-1 x n-1 TL * * C0C0 BL C0C0 C1C1 C0C0 C0C0 C m-1 BRC m-1 * BR SAT T * * TLT T OK TT F TF F FF F FF 0 * * xixi * 0x i 1 * * xixi 1x i OK CjCj 0x i If x i = 0  C j true OK CjCj 1x i If x i = 1  C j true OK CjCj CjCj 1x i Otherwise CjCj CjCj CjCj 0x i Otherwise CjCj OK 0x i OK 1x i OK CjCj CjCj Clause tiles – one for each of the m clauses * * 1x i 0x i

x0x0 x0x0 x0x0 * x0x0 BL x1x1 x n-1 X n-1 x n-1 TL * * C0C0 BL C0C0 C1C1 C0C0 C0C0 C m-1 BRC m-1 * BR SAT T * * TLT T OK TT F TF F FF F FF 0 * * xixi * 0x i 1 * * xixi 1x i OK CjCj 0x i If x i = 0  C j true OK CjCj 1x i If x i = 1  C j true OK CjCj CjCj 1x i Otherwise CjCj CjCj CjCj 0x i Otherwise CjCj OK 0x i OK 1x i OK CjCj CjCj Assignment tiles – these tiles attach non-deterministically to “guess” a true/false assignment for the n variables (2 n possible assemblies) * * 1x i 0x i

x0x0 x0x0 x0x0 * x0x0 BL x1x1 x n-1 X n-1 x n-1 TL * * C0C0 BL C0C0 C1C1 C0C0 C0C0 C m-1 BRC m-1 * BR SAT T * * TLT T OK TT F TF F FF F FF 0 * * xixi * 0x i 1 * * xixi 1x i OK CjCj 0x i If x i = 0  C j true OK CjCj 1x i If x i = 1  C j true OK CjCj CjCj 1x i Otherwise CjCj CjCj CjCj 0x i Otherwise CjCj OK 0x i OK 1x i OK CjCj CjCj Computation tiles – these tiles initially bind via south and west. Only one of the tile types per row is created * * 1x i 0x i

x0x0 x0x0 x0x0 * x0x0 BL x1x1 x n-1 X n-1 x n-1 TL * * C0C0 BL C0C0 C1C1 C0C0 C0C0 C m-1 BRC m-1 * BR SAT T * * TLT T OK TT F TF F FF F FF 0 * * xixi * 0x i 1 * * xixi 1x i OK CjCj 0x i If x i = 0  C j true OK CjCj 1x i If x i = 1  C j true OK CjCj CjCj 1x i Otherwise CjCj CjCj CjCj 0x i Otherwise CjCj OK 0x i OK 1x i OK CjCj CjCj Propagation tiles – once a clause is satisfied (made to be true), then we propagate the OK signal to the top of the assembly * * 1x i 0x i

x0x0 x0x0 x0x0 * x0x0 BL x1x1 x n-1 X n-1 x n-1 TL * * C0C0 BL C0C0 C1C1 C0C0 C0C0 C m-1 BRC m-1 * BR SAT T * * TLT T OK TT F TF F FF F FF 0 * * xixi * 0x i 1 * * xixi 1x i OK CjCj 0x i If x i = 0  C j true OK CjCj 1x i If x i = 1  C j true OK CjCj CjCj 1x i Otherwise CjCj CjCj CjCj 0x i Otherwise CjCj OK 0x i OK 1x i OK CjCj CjCj Status tiles –track the status of the whole formula being satisfied. Once a false clause is found, the formula cannot be made true after that. * * 1x i 0x i

An example Here’s an example formula: φ = (x 0 V x 1 V ¬x 2 ) Λ (x 0 V ¬x 1 V x 2 ) Λ (¬x 0 V x 1 V ¬x 2 ) Can φ be solved? –Can you assign values to the 3 variables that make all the clauses of φ true? Sure! x 0 = true, x 1 = true and x 2 = false Not every true/false assignment works, e.g., x 0 = true, x 1 = false and x 2 = true We can convert φ into a tile set T φ and use the tile assembly model to solve φ

*x0x0 x1x1 *TT *C0C0 C1C1 C2C2 *** SAT φ = (x 0 V x 1 V ¬x 2 ) Λ (x 0 V ¬x 1 V x 2 ) Λ (¬x 0 V x 1 V ¬x 2 ) All possible true/false assignments tested… Each true/false assignment represented by a different terminal assembly TT 11x2x2 OK C1C1 *0C0C0 C1C1 TT ** FF 10 * x0x0 x1x1 * *C0C0 C1C1 C2C2 * x2x2 C1C1 *0C0C0 C1C1 T 000 * x0x0 x1x1 * *C0C0 C1C1 C2C2 * x2x2 C1C1 T * * * SATTT C0C0 OK C1C1 C0C0 T 100 * x0x0 x1x1 * *C0C0 C1C1 C2C2 * x2x2 T * * * SATTT OK C2C2 C2C2 T 101 * x0x0 x1x1 * *C0C0 C1C1 C2C2 * x2x2 T 110 * x0x0 x1x1 * *C0C0 C1C1 C2C2 * x2x2 T * * * C2C2 TTSATT 01 * x0x0 x1x1 * *C0C0 C1C1 C2C2 * x2x2 0 * *OK *C0C0 C1C1 C0C0 C0C0 FFFT * * * C2C2 C2C2 SATTTTT *** TT 111 * x0x0 x1x1 * *C0C0 C1C1 C2C2 * x2x2 OK C2C2

Tile complexity If φ is a 3SAT formula with n variables and m clauses, then what is |T φ | ?? |T φ | = O(m + n) Time complexity to create T φ : O(m + n)

What does this mean? For each 3SAT formula φ, we can create a tile set T φ that “solves” φ in a special way –I.e., either placing (or NOT placing) the upper- right corner tile depending on whether φ is solved by a particular True/False assignment If T φ does not uniquely produce a shape, then we can conclude that φ CAN be solved

Just pretend Now pretend that there is an algorithm, say Unique-Shape, that solves USV in time O(|X|) –Input: a tile set T, a temperature τ and a shape X –Output: Yes if T uniquely produces a shape (also output the points in the shape in this case) and No otherwise (no output) How do we use Unique-Shape in an algorithm, say Solve-3SAT, that can solve 3SAT with running time “O(n)”?

Solve 3SAT using USV Algorithm Solve-3SAT(φ) // φ is a 3SAT formula with n variables // and m clauses 1.Create a tile set T φ as previously discussed. 2.If Unique-Shape(T φ ) outputs No then output Yes. 3.If Unique-Shape(T φ ) outputs Yes then output Yes if the shape is a rectangle, and No if the shape is a rectangle with the top-right corner missing. Running time of Solve-3SAT : O(m + n) + “O(|X|)” + “O(|X|)” + “O(1)”= O(m + n) + “O(1)” = O(m + n) + O(1) = O(n) But this means 3SAT is an “easy” problem, because we have an algorithm that computes it in time O(n) In other words, assuming USV is easy, so too is 3SAT. Contradiction! Thus, USV is probably not easy (so an efficient Unique-Shape probably doesn’t exist).

Summary Assembly verification (2D/3D) –Easy Unique assembly verification (2D/3D) –Easy Unique shape verification (2D/3D) –Difficult 