Exercise: fourAB Write a method fourAB that prints out all strings of length 4 composed only of a’s and b’s Example Output aaaa baaa aaab baab aaba baba.

Slides:



Advertisements
Similar presentations
Traveling Salesperson Problem
Advertisements

BackTracking Algorithms
The Binomial Distribution ► Arrangements ► Remember the binomial theorem?
Announcements Assignment #4 is due tonight. Last lab program is going to be assigned this Wednesday. ◦ A backtracking problem.
Building Java Programs
Backtracking COP Backtracking  Backtracking is a technique used to solve problems with a large search space, by systematically trying and eliminating.
LING 438/538 Computational Linguistics Sandiway Fong Lecture 9: 9/21.
COMMONWEALTH OF AUSTRALIA Copyright Regulations 1969 WARNING This material has been reproduced and communicated to you by or on behalf of Monash University.
Blind Search-Part 2 Ref: Chapter 2. Search Trees The search for a solution can be described by a tree - each node represents one state. The path from.
Derrick Coetzee, Microsoft Research CC0 waiverCC0 waiver: To the extent possible under law, I waive all copyright and related or neighboring rights to.
Backtracking.
Algorithm design techniques
Building Java Programs
Noiseless Coding. Introduction Noiseless Coding Compression without distortion Basic Concept Symbols with lower probabilities are represented by the binary.
Busby, Dodge, Fleming, and Negrusa. Backtracking Algorithm Is used to solve problems for which a sequence of objects is to be selected from a set such.
Fundamentals of Algorithms MCS - 2 Lecture # 7
CSE 143 Lecture 17 More Recursive Backtracking reading: "Appendix R" on course web site slides created by Marty Stepp and Hélène Martin
CSE 143 Lecture 17 More Recursive Backtracking reading: "Appendix R" on course web site slides created by Marty Stepp and Hélène Martin
Télécom 2A – Algo Complexity (1) Time Complexity and the divide and conquer strategy Or : how to measure algorithm run-time And : design efficient algorithms.
CSE 143 Lecture 18 Recursive Backtracking reading: 12.5 or "Appendix R" on course web site slides adapted from Marty Stepp and Hélène Martin
Building Java Programs Appendix R Recursive backtracking.
Analysis & Design of Algorithms (CSCE 321)
Lecture 2 Theory of AUTOMATA
CompSci Problem Solving: Sudoku  Rules of the Game Sudoku is played with a 9 by 9 "board" consisting of nine 3 by 3 sub-boards. The symbols 1 -
Lecture 02: Theory of Automata:2014 Asif Nawaz Theory of Automata.
CSE 143 Lecture 17 Recursive Backtracking slides created by Marty Stepp ideas and examples taken from Stanford University.
Recap Lecture 3 RE, Recursive definition of RE, defining languages by RE, { x}*, { x}+, {a+b}*, Language of strings having exactly one aa, Language of.
CSE 143 read: 12.5 Lecture 18: recursive backtracking.
CSG3F3/ Desain dan Analisis Algoritma
Problem Solving: Brute Force Approaches
Traveling Salesperson Problem
Instructor: Vincent Conitzer
Theory of Computation Lecture #
Depth-First Search N-Queens Problem Hamiltonian Circuits
Recursion A problem solving technique where an algorithm is defined in terms of itself A recursive method is a method that calls itself A recursive algorithm.
Backtracking And Branch And Bound
Theory of Automata.
Regular Expressions (Examples)
read: 12.5 Lecture 17: recursive backtracking
The "8 Queens" problem Consider the problem of trying to place 8 queens on a chess board such that no queen can attack another queen. What are the "choices"?
CSE 143 Lecture 19 More Recursive Backtracking
Backtracking And Branch And Bound
Building Java Programs
Recursion Copyright (c) Pearson All rights reserved.
Problem Solving: Brute Force Approaches
Chapter 10: Algorithm Design Techniques
Back Tracking.
Exercise: Dice roll sum
Road Map - Quarter CS Concepts Data Structures Java Language
Pumping Lemma.
Exercise: Dice roll sum Write a method diceSum similar to diceRoll, but it also accepts a desired sum and prints only arrangements that add up to.
Exercise: Dice roll sum
Pruning 24-Feb-19.
Road Map - Quarter CS Concepts Data Structures Java Language
Backtracking and Branch-and-Bound
Recursive backtracking
AS-Level Maths: Core 2 for Edexcel
Backtracking And Branch And Bound
Exercise: Dice rolls Write a method diceRoll that accepts an integer parameter representing a number of 6-sided dice to roll, and output all possible arrangements.
CSE 143 Lecture 18 More Recursive Backtracking
Exercise: Dice roll sum
Recursive backtracking
The "8 Queens" problem Consider the problem of trying to place 8 queens on a chess board such that no queen can attack another queen. What are the "choices"?
CSC312 Automata Theory Lecture # 5 Chapter # 4 Cont…
Magnetic and chemical equivalence
CSE 143 Lecture 12 Recursive Backtracking
Announcements Assignment #4 is due tonight. Last lab program is going to be assigned this Wednesday. ◦ A backtracking problem.
Time Complexity and the divide and conquer strategy
Presentation transcript:

Exercise: fourAB Write a method fourAB that prints out all strings of length 4 composed only of a’s and b’s Example Output aaaa baaa aaab baab aaba baba aabb babb abaa bbaa abab bbab abba bbba abbb bbbb

Decision Tree a b … aa ab … aaa aab aaaa aaab aaba aabb

Exercise: Dice rolls Write a method diceRoll that accepts an integer parameter representing a number of 6-sided dice to roll, and output all possible arrangements of values that could appear on the dice. diceRoll(2); diceRoll(3); [1, 1] [1, 2] [1, 3] [1, 4] [1, 5] [1, 6] [2, 1] [2, 2] [2, 3] [2, 4] [2, 5] [2, 6] [3, 1] [3, 2] [3, 3] [3, 4] [3, 5] [3, 6] [4, 1] [4, 2] [4, 3] [4, 4] [4, 5] [4, 6] [5, 1] [5, 2] [5, 3] [5, 4] [5, 5] [5, 6] [6, 1] [6, 2] [6, 3] [6, 4] [6, 5] [6, 6] [1, 1, 1] [1, 1, 2] [1, 1, 3] [1, 1, 4] [1, 1, 5] [1, 1, 6] [1, 2, 1] [1, 2, 2] ... [6, 6, 4] [6, 6, 5] [6, 6, 6] interesting variation: Output only the *unique* rearrangements. For example, permute("GOOGLE") has two Os, but swapping them in order produces the same string, which shouldn't appear twice in the output.

Examining the problem We want to generate all possible sequences of values. for (each possible first die value): for (each possible second die value): for (each possible third die value): ... print! This is called a depth-first search How can we completely explore such a large search space?

A decision tree chosen available - 4 dice 1 3 dice 2 3 dice ... 1, 1 1, 2 2 dice 1, 3 2 dice 1, 4 2 dice ... ... ... 1, 1, 1 1 die 1, 1, 2 1 die 1, 1, 3 1 die 1, 4, 1 1 die ... ... 1, 1, 1, 1 1, 1, 1, 2 ... 1, 1, 3, 1 1, 1, 3, 2 ...

Backtracking backtracking: Finding solution(s) by trying partial solutions and then abandoning them if they are not suitable. a "brute force" algorithmic technique (tries all paths) often implemented recursively Applications: producing all permutations of a set of values parsing languages games: anagrams, crosswords, word jumbles, 8 queens combinatorics and logic programming

Backtracking strategies When solving a backtracking problem, ask these questions: What are the "choices" in this problem? What is the "base case"? (How do I know when I'm out of choices?) How do I "make" a choice? Do I need to create additional variables to remember my choices? Do I need to modify the values of existing variables? How do I explore the rest of the choices? Do I need to remove the made choice from the list of choices? Once I'm done exploring, what should I do? How do I "un-make" a choice?

Exercise: Dice roll sum Write a method diceSum similar to diceRoll, but it also accepts a desired sum and prints only arrangements that add up to exactly that sum. diceSum(2, 7); diceSum(3, 7); [1, 6] [2, 5] [3, 4] [4, 3] [5, 2] [6, 1] [1, 1, 5] [1, 2, 4] [1, 3, 3] [1, 4, 2] [1, 5, 1] [2, 1, 4] [2, 2, 3] [2, 3, 2] [2, 4, 1] [3, 1, 3] [3, 2, 2] [3, 3, 1] [4, 1, 2] [4, 2, 1] [5, 1, 1]

Consider all paths? chosen available desired sum - 3 dice 5 1 2 dice 2 4 2 dice 5 2 dice 6 2 dice 1, 1 1 die 1, 2 1 die 1, 3 1 die 1, 4 1 die 1, 5 1 die 1, 6 1 die 1, 1, 1 1, 1, 2 1, 1, 3 1, 1, 4 1, 1, 5 1, 1, 6 1, 6, 1 1, 6, 2 ...

Optimizations We need not visit every branch of the decision tree. Some branches are clearly not going to lead to success. We can preemptively stop, or prune, these branches. Inefficiencies in our dice sum algorithm: Sometimes the current sum is already too high. (Even rolling 1 for all remaining dice would exceed the sum.) Sometimes the current sum is already too low. (Even rolling 6 for all remaining dice would not reach the sum.) When finished, the code must compute the sum every time. (1+1+1 = ..., 1+1+2 = ..., 1+1+3 = ..., 1+1+4 = ..., ...)

New decision tree chosen available desired sum - 3 dice 5 1 2 dice 2 4 2 dice 5 2 dice 6 2 dice 1, 1 1 die 1, 2 1 die 1, 3 1 die 1, 4 1 die 1, 5 1 die 1, 6 1 die 1, 1, 1 1, 1, 2 1, 1, 3 1, 1, 4 1, 1, 5 1, 1, 6 1, 6, 1 1, 6, 2 ...