Road Map - Quarter CS Concepts Data Structures Java Language

Slides:



Advertisements
Similar presentations
The Binomial Distribution ► Arrangements ► Remember the binomial theorem?
Advertisements

Building Java Programs
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.
Recursion Chapter 7. Chapter 7: Recursion2 Chapter Objectives To understand how to think recursively To learn how to trace a recursive method To learn.
Building Java Programs
Instructor: Dr. Sahar Shabanah Fall Lectures ST, 9:30 pm-11:00 pm Text book: M. T. Goodrich and R. Tamassia, “Data Structures and Algorithms in.
Recursion Chapter 7. Chapter Objectives  To understand how to think recursively  To learn how to trace a recursive method  To learn how to write recursive.
Big Java Chapter 16.
Algorithm Fundamentals Shane Carr CSE 232, Fall 2015.
CSS446 Spring 2014 Nan Wang.  Java Collection Framework ◦ Set ◦ Map 2.
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.
Data Structures and Algorithms Lists, Stacks, Queues, and Graphs Sorting and searching algorithms.
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.
Various Problem Solving Approaches. Problem solving by analogy Very often problems can be solved by looking at similar problems. For example, consider.
Building Java Programs
Recursion Topic 5.
Theory of Computation Lecture #
CSC 321: Data Structures Fall 2016
CSC 321: Data Structures Fall 2017
BackTracking CS255.
Wednesday Notecards. Wednesday Notecards Wednesday Notecards.
Theory of Automata.
Regular Expressions (Examples)
read: 12.5 Lecture 17: recursive backtracking
13 Text Processing Hongfei Yan June 1, 2016.
i206: Lecture 13: Recursion, continued Trees
Backtracking And Branch And Bound
Road Map CS Concepts Data Structures Java Language Java Collections
Building Java Programs
Road Map CS Concepts Data Structures Java Language Java Collections
structures and their relationships." - Linus Torvalds
Road Map - Quarter CS Concepts Data Structures Java Language
Building Java Programs
Recursion Copyright (c) Pearson All rights reserved.
Building Java Programs
structures and their relationships." - Linus Torvalds
CSE 142 vs CSE 143 CSE 142 CSE 143 You learned how to write programs and decompose large problems with: Print statements Methods Control Structures.
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.
Exercise: Dice roll sum
Pumping Lemma.
Welcome to CSE 143! Go to pollev.com/cse143.
CSE 143 Lecture 17 Recursive Backtracking
Building Java Programs
Copyright ©2012 by Pearson Education, Inc. All rights reserved
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
CSE 1020: The Collection Framework
Road Map - Quarter CS Concepts Data Structures Java Language
Road Map CS Concepts Data Structures Java Language Java Collections
Backtracking and Branch-and-Bound
1.4 ทบทวน JAVA OO Programming Concepts Declaring and Creating Objects
CSC 321: Data Structures Fall 2018
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.
Exercise: Dice roll sum
Recursive backtracking
Trees in java.util A set is an object that stores unique elements
CSC312 Automata Theory Lecture # 5 Chapter # 4 Cont…
CSE 143 Lecture 12 Recursive Backtracking
CS203 Lecture 15.
CS 240 – Advanced Programming Concepts
Announcements Assignment #4 is due tonight. Last lab program is going to be assigned this Wednesday. ◦ A backtracking problem.
structures and their relationships." - Linus Torvalds
Presentation transcript:

Road Map - Quarter CS Concepts Data Structures Java Language Client/Implementer Efficiency Recursion Regular Expressions Grammars Sorting Backtracking Hashing Huffman Compression Data Structures Lists Stacks Queues Sets Maps Priority Queues Java Language Exceptions Interfaces References Comparable Generics Inheritance/Polymorphism Abstract Classes Java Collections Arrays ArrayList 🛠 LinkedList 🛠 Stack TreeSet / TreeMap HashSet / HashMap PriorityQueue

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.

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 ...

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?

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 ...

Exercise: Combinations Write a method combinations that accepts a string s and an integer k as parameters and outputs all possible k -letter words that can be formed from unique letters in that string. The arrangements may be output in any order. Example: combinations("GOOGLE", 3) outputs the sequence of lines at right. To simplify the problem, you may assume that the string s contains at least k unique characters. EGL EGO ELG ELO EOG EOL GEL GEO GLE GLO GOE GOL LEG LEO LGE LGO LOE LOG OEG OEL OGE OGL OLE OLG