World Champion chess player Garry Kasparov was defeated by IBM s Deep Blue chess-playing computer in a sixgame match in May, The match received
|
|
- Jemimah Berry
- 5 years ago
- Views:
Transcription
1
2 World Champion chess player Garry Kasparov was defeated by IBM s Deep Blue chess-playing computer in a sixgame match in May, The match received enormous media coverage, much of which emphasized the notion that Kasparov was defending humanity s honor.
3
4
5 Games
6 Minimax for 2-player games Minimax is a standard AI strategy for 2-player games that are alternating: players take turns deterministic: each move has a well-defined outcome (there is no randomness) perfect-information: each player knows the complete state of the game (there is no hidden information zero-sum: if I win you lose, and vice versa what s good for me is bad for you (but draws are allowed)
7 Example: Nim Start with 15 pebbles To make a move you pick up 1, 2, or 3 pebbles Whoever picks up the last pebble loses e.g., 1. You pick up 3 (12 left) 2. I pick up 3 (9 left) 3. You pick up 2 (7 left) 4. I pick up 2 (5 left) 5. You pick up 1 (4 left) 6. I pick up 3 (1 left) 7. You pick 1 (0 left) 8. I win!
8 Example: Nim Nim actually has a winning strategy for the player going first! Consider Nim with 5 pebbles. If it s your turn and there are 5 pebbles left then you lose: if you take 1, I take 3, and there is 1 left; if you take 2, I take 2; if you take 3 I take 1. Similarly: 9 5, , etc. The pattern: if it s your turn and pebbles mod 4 1 then I have a winning strategy: choose always to leave the number of pebbles congruent to 1 mod 4.
9 Example: Nim Nim is special: a quick calculation tells who will win. For a game like chess (or Kalaha!) you can t tell (in constant time) just by looking at a board who will win. So, we must use computation to search possible future states. Build a game tree where nodes are states and edges are moves. Each row is labeled with the player whose turn it is.
10 Example: Nim Starting with 3 pebbles: 3 Maxie Minnie Maxie 0 Minnie
11 Example: Nim Next assign each node a value, saying who wins. Maxie wins if the value is 1. Minnie wins if the value is Maxie Minnie Maxie First label the leaves. 0-1 Minnie
12 Example: Nim Then propagate the labels up the tree. If it s Maxie s turn the value is the maximum of the children (because Maxie will choose the maximising move). If it s Minnie s it is the minimum. First level Maxie Minnie Maxie Minnie
13 Example: Nim Next level. 3 Maxie For example, on the rightmost subtree if there are two pebbles left then Minnie should take 1, leaving 1, rather than 2, leaving Minnie -1 Maxie 0-1 Minnie
14 Example: Nim Next level. 1 3 Maxie Maxie should take 2, leaving 1, rather than taking 3 or Minnie -1 Maxie 0-1 Minnie
15 Minimax algorithm Minimax computes the value of a game state assuming both players will play optimally. It does not account for things like that chess board is confusing, so it will be easy to make a mistake For a game with a bigger search space than this we can t draw out the whole tree! Instead, a heuristic must approximate the value of the board. Nim has a perfect heuristic: number of pebbles congruent to 1 mod 4.
16 Minimax algorithm The overall algorithm is: 1. explore the game tree up to a certain depth 2. use the heuristic to approximate the value when the depth is reached. For chess, a given heuristic would include which pieces are left, where they are positioned, etc.
17 GameTree.hs [live coding]
18 Abstract Data Types Chapter 16 of Thompson
19 Information Hiding Abstract data types (ADTs) allow information hiding on types. They hide the representation (or model) behind an abstract set of operations. Separates: data type definition from representation function declaration from implementation Application Specification Implementation User Implementor Interface
20 Information Hiding Consider modeling a computer s Random Access Memory (RAM), which stores values in memory variables. We might model RAM in different ways: [(Integer,Var)] (Var -> Integer) -- a list of integer/variable pairs -- a function from vars to integers Regardless of the model, operations to obtain an initial store and access/update variables have well-defined specifications: initial :: Store read :: Store -> Var -> Integer write :: Store -> Var -> Integer -> Store
21 Information Hiding The operation signatures specify the interface, upon which users and implementers agree, allowing them to work independently. But we want to isolate users from the model: allows evolution of the model without affecting users prevents manipulating the model in unintended ways e.g., prevent list operations on list model, composition on function model
22 Example: Signature Modules support information hiding by exposing only operations in the signature of the module header: module Store ( Store, initial, value, update ) where -- Store -- Store -> Var -> Integer -- Store -> Var -> Integer -> Store
23 Example: Implementation I data Store = Store [ (Integer,Var) ] initial :: Store initial = Store [] value :: Store -> Var -> Integer value (Store []) v = 0 value (Store ((n,w):s)) v v==w = n otherwise = value (Store s) v update :: Store -> Var -> Integer -> Store update (Store s) v n = Store ((n,v):s)
24 Example: Implementation II data Store = Store (Var -> Integer) initial :: Store initial = Store (\v -> 0) value :: Store -> Var -> Integer value (Store s) v = s v update :: Store -> Var -> Integer -> Store update (Store s) v n = Store (\w -> if v==w then n else s w)
25 Example: Implementations I and II Note that in both implementations storing more than once to the same variable will result in adding the new value to the store, but not removing the old one! Implementation I prepends to the list Implementation II constructs a new function as a conditional expression with the old function as the condition s else part
26
27 Queues: First-In First-Out (FIFO) module Queue ( Queue, emptyq, -- Queue a isemptyq, -- Queue a -> Bool addq, -- a -> Queue a -> Queue a remq -- Queue a -> ( a, Queue a ) ) where
28 Queues: Implementation I newtype Queue a = Queue [a] emptyq :: Queue a emptyq = Queue [] isemptyq :: Queue a -> Bool isemptyq (Queue []) = True isemptyq _ = False addq :: a -> Queue a -> Queue a addq x (Queue xs) = Queue (xs++[x]) remq :: Queue a -> ( a, Queue a ) remq q@(queue xs) not (isemptyq q) = (head xs, Queue (tail xs)) otherwise = error "remq"
29 Queues: Implementation II addq x (Queue xs) = Queue (x:xs) remq q@(queue xs) not (isemptyq q) = (last xs, Queue (init xs)) otherwise = error "remq"
30 Queues: a two-list queue Remove from left. Add to right. Only case of empty queue on left is expensive: reverse right list to left list.
31 Queues: Implementation III data Queue a = Queue [a] [a] emptyq :: Queue a emptyq = Queue [] [] isemptyq :: Queue a -> Bool isemptyq (Queue [] []) = True isemptyq _ = False addq :: a -> Queue a -> Queue a addq x (Queue xs ys) = Queue xs (x:ys) remq :: Queue a -> ( a, Queue a ) remq (Queue (x:xs) ys) = (x, Queue xs ys) remq (Queue [] ys@(z:zs)) = remq (Queue (reverse ys) []) remq (Queue [] []) = error "remq"
32 Designing ADTs to solve problems 1. Identify and name the types in the system. 2. Informally describe them. 3. Write the signature of each ADT. What belongs in the signature? What doesn t? Create an instance Discriminate instances Get state from an instance Transform an instance Combine instances Collapse instances
33
34 Tree module module Tree (Tree, nil, isnil, isnode, leftsub, rightsub, treeval, instree, delete, mintree, ) where -- Tree a -- Tree a -> Bool -- Tree a -> Bool -- Tree a -> Tree a -- Tree a -> Tree a -- Tree a -> a -- Ord a => a -> Tree a -> Tree a -- Ord a => a -> Tree a -> Tree a -- Ord a => Tree a -> Maybe a
35 ADT signatures should be minimal Omit operations that can be defined in terms of other operations, so independent of implementation: size :: Tree a -> Integer size t isnil t = 0 otherwise = 1 + size (leftsub t) + size (rightsub t)
36 Search Trees A binary search tree is a binary tree whose elements are ordered. Recall: data Tree a = Nil Node a (Tree a) (Tree a) A tree (Node val t 1 t 2 ) is ordered if: all values in t 1 are smaller than val, all values in t 2 are larger than val, and the trees t 1 and t 2 are also ordered where the tree Nil is trivially ordered. We can use an ADT to enforce order, by making sure implementations of operations in the interface preserve order.
37 Search Trees: Signature module Tree (Tree, nil, isnil, isnode, leftsub, rightsub, treeval, instree, delete, mintree, elemt ) where -- Tree a -- Tree a -> Bool -- Tree a -> Bool -- Tree a -> Tree a -- Tree a -> Tree a -- Tree a -> a -- Ord a => a -> Tree a -> Tree a -- Ord a => a -> Tree a -> Tree a -- Ord a => Tree a -> Maybe a -- Ord a => a -> Tree a -> Bool
38 Search Trees: Insertion instree val (Node v t1 t2) v==val = Node v t1 t2 val > v = Node v t1 (instree val t2) val < v = Node v (instree val t1) t2
39 Search Trees: Deletion delete join t1 val t2 (Node v t1 t2) = val Node < mini v t1 = newt Node v (delete val t1) t2 val where > v = Node v t1 (delete val t2) isnil (Just t2 mini) = t1 mintree t2 isnil newt t1 = t2 delete mini t2 otherwise join t1 t2
40 Set Theory
41 Sets Lists impose order, and allow multiplicity. [Joe, Sue, Ben] [Joe, Sue, Sue, Ben] [Ben, Sue, Joe] [Joe, Sue, Ben, Sue] Whereas, there is only one set containing these people: {Ben, Joe, Sue} So, an implementation of the Set ADT must ensure uniqueness of elements.
42 Sets Example implementation: an ordered list of elements without repetition [Set.hs]
43 Relations A binary relation is a relationship among elements of a set. e.g., parents and children in a family isparent = {(Ben, Sue), (Ben,Leo), (Sue, Joe)} In general: type Relation a = Set (a,a) So, all set operations are available on Relation values.
44 Relations The image of an element: all elements related to a given element e.g., all of Ben s children image isparent Ben = {Sue, Leo} The image of a set of elements: all elements related to a set of elements: the union of the images (sets) of each of the elements: unionset {s 1,, s n } = s 1 s n = s 1 `union` `union` s n e.g., addchildren: take image of a set of people under isparent and add
45 Relations: defining isancestor The transitive closure of the isparent relation. First, consider grandparent starting from parents: e.g., (Ben,Sue), (Sue, Joe) isgrandparent = isparent `compose` isparent e.g., {(Ben,Joe)} Set product is used by compose to pair elements of a first set with elements of a second set. e.g., setproduct {Ben,Suzie} {Sue,Joe} = {(Ben,Sue),(Ben,Joe),(Suzie,Sue),(Suzie,Joe)}
46 Relations: transitive closure and limits A relation rel is transitive if for all (a,b) and (b,c) in rel, then (a,c) is also in rel. The transitive closure of a relation rel is the smallest relation extending rel that is transitive: repeat compose until nothing more is added. To do this, we can use limit f x to give the limit of the sequence: x, f x, f (f x), f (f (f x)),, f n x which is the value the sequence settles to if it exists, computed by taking the first element in the sequence whose successor is equal to the element itself: f n x = f n+1 x
47 Relations: example Given {(Ben,Sue), (Sue,Joe)} addchildren {Joe,Ben} = {Joe,Sue,Ben} limit addchildren {Ben}?? {Ben}=={Ben,Sue} False limit addchildren {Ben,Sue}?? {Ben,Sue}=={Ben,Joe,Sue} False limit addchildren {Ben,Joe,Sue}?? {Ben,Joe,Sue}=={Ben,Joe,Sue} True {Ben,Joe,Sue}
48 Graphs Another way of thinking of relations is as directed graphs: e.g., graph1 = {(1,2),(1,3),(3,2),(3,4),(4,2),(2,4)} Here, transitive closure represents paths of reachability in the graph: e.g., the transitive closure contains (1,4), but not (2,1)
49 Graphs: strongly connected components Nodes connected by a path to all other nodes in the component: e.g., the components of graph1 are {1}, {3}, {2,4}
50 Computing strongly connected components First form the relation that links points in the same component There is a path from x to y and vice versa if both (x,y) and (y,x) are in the closure: connect :: Ord a => Relation a -> Relation a connect rel = clos `inter` solc where clos = tclosure rel solc = inverse clos where inverse swaps all pairs in the relation: inverse = mapset swap where swap (x,y) = (y,x)
51 Computing strongly connected components Next form the components (or equivalance classes) generated by this relation Start with the nodes (e.g., {{1},{2},{3},{4}}) and close over them using the relation: classes :: Ord a => Relation a -> Set (Set a) classes rel = limit (addimages rel) start where start = mapset sing (eles rel)
Introduction to Programming, Aug-Dec 2006
Introduction to Programming, Aug-Dec 2006 Lecture 3, Friday 11 Aug 2006 Lists... We can implicitly decompose a list into its head and tail by providing a pattern with two variables to denote the two components
More informationAbstract Data Types. Functional Programming and Reasoning. Dr Hans Georg Schaathun. University of Surrey. Spring 2010 Week 4
Abstract Data Types Functional Programming and Reasoning Dr Hans Georg Schaathun University of Surrey Spring 2010 Week 4 Dr Hans Georg Schaathun Abstract Data Types Spring 2010 Week 4 1 / 32 Outline 1
More informationPROGRAMMING IN HASKELL. Chapter 5 - List Comprehensions
PROGRAMMING IN HASKELL Chapter 5 - List Comprehensions 0 Set Comprehensions In mathematics, the comprehension notation can be used to construct new sets from old sets. {x 2 x {1...5}} The set {1,4,9,16,25}
More informationArtificial Intelligence. Game trees. Two-player zero-sum game. Goals for the lecture. Blai Bonet
Artificial Intelligence Blai Bonet Game trees Universidad Simón Boĺıvar, Caracas, Venezuela Goals for the lecture Two-player zero-sum game Two-player game with deterministic actions, complete information
More informationGraph and Digraph Glossary
1 of 15 31.1.2004 14:45 Graph and Digraph Glossary A B C D E F G H I-J K L M N O P-Q R S T U V W-Z Acyclic Graph A graph is acyclic if it contains no cycles. Adjacency Matrix A 0-1 square matrix whose
More informationFunctional Programming in Haskell Part I : Basics
Functional Programming in Haskell Part I : Basics Madhavan Mukund Chennai Mathematical Institute 92 G N Chetty Rd, Chennai 600 017, India madhavan@cmi.ac.in http://www.cmi.ac.in/ madhavan Madras Christian
More informationFunctional Programming in Haskell Part 2 : Abstract dataypes and infinite structures
Functional Programming in Haskell Part 2 : Abstract dataypes and infinite structures Madhavan Mukund Chennai Mathematical Institute 92 G N Chetty Rd, Chennai 600 017, India madhavan@cmi.ac.in http://www.cmi.ac.in/
More informationComputer Science 136 Spring 2004 Professor Bruce. Final Examination May 19, 2004
Computer Science 136 Spring 2004 Professor Bruce Final Examination May 19, 2004 Question Points Score 1 10 2 8 3 15 4 12 5 12 6 8 7 10 TOTAL 65 Your name (Please print) I have neither given nor received
More informationCS 457/557: Functional Languages
CS 457/557: Functional Languages Lists and Algebraic Datatypes Mark P Jones Portland State University 1 Why Lists? Lists are a heavily used data structure in many functional programs Special syntax is
More informationGames and Adversarial Search II Alpha-Beta Pruning (AIMA 5.3)
Games and Adversarial Search II Alpha-Beta Pruning (AIMA 5.) Some slides adapted from Richard Lathrop, USC/ISI, CS 7 Review: The Minimax Rule Idea: Make the best move for MAX assuming that MIN always replies
More informationMonads. COS 441 Slides 16
Monads COS 441 Slides 16 Last time: Agenda We looked at implementation strategies for languages with errors, with printing and with storage We introduced the concept of a monad, which involves 3 things:
More informationPriority Queues. 1 Introduction. 2 Naïve Implementations. CSci 335 Software Design and Analysis III Chapter 6 Priority Queues. Prof.
Priority Queues 1 Introduction Many applications require a special type of queuing in which items are pushed onto the queue by order of arrival, but removed from the queue based on some other priority
More informationCSCE 314 TAMU Fall CSCE 314: Programming Languages Dr. Flemming Andersen. Haskell Functions
1 CSCE 314: Programming Languages Dr. Flemming Andersen Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions
More informationCS102 Binary Search Trees
CS102 Binary Search Trees Prof Tejada 1 To speed up insertion, removal and search, modify the idea of a Binary Tree to create a Binary Search Tree (BST) Binary Search Trees Binary Search Trees have one
More informationCS 11 Ocaml track: lecture 4. Today: modules
CS 11 Ocaml track: lecture 4 Today: modules The idea of modules What's the idea behind a "module"? Package up code so other people/programs can use it Control what parts of code are part of the interface
More informationn n Try tutorial on front page to get started! n spring13/ n Stack Overflow!
Announcements n Rainbow grades: HW1-6, Quiz1-5, Exam1 n Still grading: HW7, Quiz6, Exam2 Intro to Haskell n HW8 due today n HW9, Haskell, out tonight, due Nov. 16 th n Individual assignment n Start early!
More informationSolution sheet 1. Introduction. Exercise 1 - Types of values. Exercise 2 - Constructors
Solution sheet 1 Introduction Please note that there can be other solutions than those listed in this document. This is a literate Haskell file which is available as PDF, as well as literate Haskell source
More informationLecture 31: Graph Search & Game 10:00 AM, Nov 16, 2018
CS Integrated Introduction to Computer Science Klein Lecture : Graph Search & Game 0:00 AM, Nov, 08 Contents Rooted-tree search DAG search Search in a graph with cycles 4 The GAME Signature Functors Rooted-tree
More informationAlpha-Beta Pruning in Mini-Max Algorithm An Optimized Approach for a Connect-4 Game
Alpha-Beta Pruning in Mini-Max Algorithm An Optimized Approach for a Connect-4 Game Rijul Nasa 1, Rishabh Didwania 2, Shubhranil Maji 3, Vipul Kumar 4 1,2,3,4 Dept. of Computer Science & Engineering, The
More informationCPSC 436D Video Game Programming
CPSC 436D Video Game Programming Strategy & Adversarial Strategy Strategy Given current state, determine BEST next move Short term: best among immediate options Long term: what brings something closest
More informationGADTs. Wouter Swierstra and Alejandro Serrano. Advanced functional programming - Lecture 7. [Faculty of Science Information and Computing Sciences]
GADTs Advanced functional programming - Lecture 7 Wouter Swierstra and Alejandro Serrano 1 Today s lecture Generalized algebraic data types (GADTs) 2 A datatype data Tree a = Leaf Node (Tree a) a (Tree
More informationJava Fundamentals. Problem solving. Rudiments of Java. Backus Naur Form (BNF) NIM
Java Fundamentals Problem solving NIM Rudiments of Java Classes, objects, methods, constructors Declarations, statements, output Backus Naur Form (BNF) Barbara G. Ryder CS111 Spring 1998 1 Goal: Problem
More informationHEAPS: IMPLEMENTING EFFICIENT PRIORITY QUEUES
HEAPS: IMPLEMENTING EFFICIENT PRIORITY QUEUES 2 5 6 9 7 Presentation for use with the textbook Data Structures and Algorithms in Java, 6 th edition, by M. T. Goodrich, R. Tamassia, and M. H., Wiley, 2014
More informationFunctional Programming Mid-term exam Tuesday 3/10/2017
Functional Programming Mid-term exam Tuesday 3/10/2017 Name: Student number: Before you begin: Do not forget to write down your name and student number above. If necessary, explain your answers in English.
More informationGADTs. Alejandro Serrano. AFP Summer School. [Faculty of Science Information and Computing Sciences]
GADTs AFP Summer School Alejandro Serrano 1 Today s lecture Generalized algebraic data types (GADTs) 2 A datatype data Tree a = Leaf Node (Tree a) a (Tree a) This definition introduces: 3 A datatype data
More informationCSE341: Programming Languages Lecture 9 Function-Closure Idioms. Dan Grossman Winter 2013
CSE341: Programming Languages Lecture 9 Function-Closure Idioms Dan Grossman Winter 2013 More idioms We know the rule for lexical scope and function closures Now what is it good for A partial but wide-ranging
More informationAmbiguous Grammars and Compactification
Ambiguous Grammars and Compactification Mridul Aanjaneya Stanford University July 17, 2012 Mridul Aanjaneya Automata Theory 1/ 44 Midterm Review Mathematical Induction and Pigeonhole Principle Finite Automata
More informationHaskell Refresher Informatics 2D
Haskell Purely functional! : Everything is a function Haskell Refresher Informatics 2D Kobby. K.A. Nuamah 30 January 2015 Main topics: Recursion Currying Higher-order functions List processing functions
More informationShared Variables and Interference
Solved Shared Variables and Interference CS 536: Science of Programming, Fall 2018 A. Why Parallel programs can coordinate their work using shared variables, but it s important for threads to not interfere
More information3137 Data Structures and Algorithms in C++
3137 Data Structures and Algorithms in C++ Lecture 3 July 12 2006 Shlomo Hershkop 1 Announcements Homework 2 out tonight Please make sure you complete hw1 asap if you have issues, please contact me will
More informationGraphiti A Simple Graph Language. Language Reference Manual
Graphiti A Simple Graph Language Language Reference Manual Alice Thum, System Architect, at3160@barnard.edu Sydney Lee, System Architect, stl2121@barnard.edu Michal Porubcin, Language Guru, mp3242@columbia.edu
More informationAlgorithm Design Techniques (III)
Algorithm Design Techniques (III) Minimax. Alpha-Beta Pruning. Search Tree Strategies (backtracking revisited, branch and bound). Local Search. DSA - lecture 10 - T.U.Cluj-Napoca - M. Joldos 1 Tic-Tac-Toe
More informationCSE 203A: Randomized Algorithms
CSE 203A: Randomized Algorithms (00:30) The Minimax Principle (Ch 2) Lecture on 10/18/2017 by Daniel Kane Notes by Peter Greer-Berezovsky Game Tree Evaluation (2.1) - n round deterministic 2-player game
More informationIntroduction to Functional Programming using Haskell
Introduction to Functional Programming using Haskell Errata April 7, 1999 Chapter 1 page 3, line 1 Replace? square 14198724 by? square 14197824. page 9, line 14 Replace hit the the interrupt key by hit
More informationLecture 7. SchemeList, finish up; Universal Hashing introduction
Lecture 7. SchemeList, finish up; Universal Hashing introduction CS 16 February 24, 2010 1 / 15 foldleft #!/usr/bin/python def foldleft(func, slist, init): foldleft: ( * -> ) * ( SchemeList)
More informationSpring 2007 Midterm Exam
15-381 Spring 2007 Midterm Exam Spring 2007 March 8 Name: Andrew ID: This is an open-book, open-notes examination. You have 80 minutes to complete this examination. Unless explicitly requested, we do not
More informationSets and Sequences vs. Linked Lists
Sets and Sequences vs. Linked Lists Florent Bouchez Tichadou September 24, 2018 We have seen previously that it is possible to use arrays (low-level structure) to hold sets or sequences (high-level structures).
More informationtree follows. Game Trees
CPSC-320: Intermediate Algorithm Design and Analysis 113 On a graph that is simply a linear list, or a graph consisting of a root node v that is connected to all other nodes, but such that no other edges
More informationCSc 372 Comparative Programming Languages
CSc 372 Comparative Programming Languages 8 : Haskell Function Examples Christian Collberg collberg+372@gmail.com Department of Computer Science University of Arizona Copyright c 2005 Christian Collberg
More informationShared Variables and Interference
Illinois Institute of Technology Lecture 24 Shared Variables and Interference CS 536: Science of Programming, Spring 2018 A. Why Parallel programs can coordinate their work using shared variables, but
More informationFinding a winning strategy in variations of Kayles
Finding a winning strategy in variations of Kayles Simon Prins ICA-3582809 Utrecht University, The Netherlands July 15, 2015 Abstract Kayles is a two player game played on a graph. The game can be dened
More informationAdvanced Type System Features Tom Schrijvers. Leuven Haskell User Group
Advanced Type System Features Tom Schrijvers Leuven Haskell User Group Data Recursion Genericity Schemes Expression Problem Monads GADTs DSLs Type Type Families Classes Lists and Effect Free Other Handlers
More informationProblem 1: Binary Trees: Flatten
Problem 1: Binary Trees: Flatten Recall the data definition for binary trees: A binary-tree is either: #f (make-bt val left right) where val is a number, and left and right are binary-trees. (define-struct
More informationCSc 372. Comparative Programming Languages. 8 : Haskell Function Examples. Department of Computer Science University of Arizona
1/43 CSc 372 Comparative Programming Languages 8 : Haskell Function Examples Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2013 Christian Collberg Functions over Lists
More informationCS 320: Concepts of Programming Languages
CS 320: Concepts of Programming Languages Wayne Snyder Computer Science Department Boston University Lecture 06: Useful Haskell Syntax, HO Programming Continued o Goodbye to Bare Bones Haskell: Built-in
More informationChapter 5. Binary Trees
Chapter 5 Binary Trees Definitions and Properties A binary tree is made up of a finite set of elements called nodes It consists of a root and two subtrees There is an edge from the root to its children
More informationPriority queues. Priority queues. Priority queue operations
Priority queues March 30, 018 1 Priority queues The ADT priority queue stores arbitrary objects with priorities. An object with the highest priority gets served first. Objects with priorities are defined
More informationHaskell Overview II (2A) Young Won Lim 8/9/16
(2A) Copyright (c) 2016 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published
More informationFINALTERM EXAMINATION Fall 2009 CS301- Data Structures Question No: 1 ( Marks: 1 ) - Please choose one The data of the problem is of 2GB and the hard
FINALTERM EXAMINATION Fall 2009 CS301- Data Structures Question No: 1 The data of the problem is of 2GB and the hard disk is of 1GB capacity, to solve this problem we should Use better data structures
More informationProcessadors de Llenguatge II. Functional Paradigm. Pratt A.7 Robert Harper s SML tutorial (Sec II)
Processadors de Llenguatge II Functional Paradigm Pratt A.7 Robert Harper s SML tutorial (Sec II) Rafael Ramirez Dep Tecnologia Universitat Pompeu Fabra Paradigm Shift Imperative Paradigm State Machine
More informationParallel Programming. Parallel algorithms Combinatorial Search
Parallel Programming Parallel algorithms Combinatorial Search Some Combinatorial Search Methods Divide and conquer Backtrack search Branch and bound Game tree search (minimax, alpha-beta) 2010@FEUP Parallel
More informationAlgebraic Types. Chapter 14 of Thompson
Algebraic Types Chapter 14 of Thompson Types so far Base types Int, Integer, Float, Bool, Char Composite types: tuples (t 1,t 2,,t n ) lists [t 1 ] functions (t 1 -> t 2 ) Algebraic types enumerated, product
More information(Provisional) Lecture 32: Estimated Value, Minimax, Functional Data 10:00 AM, Nov 20, 2017
Integrated Introduction to Computer Science Hughes (Provisional) Lecture 32: Estimated Value, Minimax, Functional Data 10:00 AM, Nov 20, 2017 Contents 1 Estimated Value and Search Subtrees 1 2 Minimax
More informationHaskell Overview II (2A) Young Won Lim 8/23/16
(2A) Copyright (c) 2016 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published
More informationA general introduction to Functional Programming using Haskell
A general introduction to Functional Programming using Haskell Matteo Rossi Dipartimento di Elettronica e Informazione Politecnico di Milano rossi@elet.polimi.it 1 Functional programming in a nutshell
More informationInformatics 1 Functional Programming Lecture 12. Data Abstraction. Don Sannella University of Edinburgh
Informatics 1 Functional Programming Lecture 12 Data Abstraction Don Sannella University of Edinburgh Part I Sets as lists without abstraction We will look again at our four ways of implementing sets.
More informationStandard ML. Data types. ML Datatypes.1
Standard ML Data types ML Datatypes.1 Concrete Datatypes The datatype declaration creates new types These are concrete data types, not abstract Concrete datatypes can be inspected - constructed and taken
More informationInformatics 2D. Coursework 1: Search and Games
Informatics 2D. Coursework 1: Search and Games Stefanie Speichert, Vaishak Belle January 30, 2019 1 Introduction The objective of this assignment is to help you understand the various search algorithms
More informationCS521 \ Notes for the Final Exam
CS521 \ Notes for final exam 1 Ariel Stolerman Asymptotic Notations: CS521 \ Notes for the Final Exam Notation Definition Limit Big-O ( ) Small-o ( ) Big- ( ) Small- ( ) Big- ( ) Notes: ( ) ( ) ( ) ( )
More informationWeek 5 Tutorial Structural Induction
Department of Computer Science, Australian National University COMP2600 / COMP6260 Formal Methods in Software Engineering Semester 2, 2016 Week 5 Tutorial Structural Induction You should hand in attempts
More informationAlgorithm Design (8) Graph Algorithms 1/2
Graph Algorithm Design (8) Graph Algorithms / Graph:, : A finite set of vertices (or nodes) : A finite set of edges (or arcs or branches) each of which connect two vertices Takashi Chikayama School of
More informationGADTs. Wouter Swierstra. Advanced functional programming - Lecture 7. Faculty of Science Information and Computing Sciences
GADTs Advanced functional programming - Lecture 7 Wouter Swierstra 1 Today s lecture Generalized algebraic data types (GADTs) 2 A datatype data Tree a = Leaf Node (Tree a) a (Tree a) This definition introduces:
More informationIA014: Advanced Functional Programming
IA014: Advanced Functional Programming 8. GADT Generalized Algebraic Data Types (and type extensions) Jan Obdržálek obdrzalek@fi.muni.cz Faculty of Informatics, Masaryk University, Brno Motivation IA014
More informationLists. Michael P. Fourman. February 2, 2010
Lists Michael P. Fourman February 2, 2010 1 Introduction The list is a fundamental datatype in most functional languages. ML is no exception; list is a built-in ML type constructor. However, to introduce
More informationMathematics for Computer Science Exercises from Week 4
Mathematics for Computer Science Exercises from Week 4 Silvio Capobianco Last update: 26 September 2018 Problems from Section 4.1 Problem 4.3. Set Formulas and Propositional Formulas. (a) Verify that the
More informationComputer Science 210 Data Structures Siena College Fall Topic Notes: Trees
Computer Science 0 Data Structures Siena College Fall 08 Topic Notes: Trees We ve spent a lot of time looking at a variety of structures where there is a natural linear ordering of the elements in arrays,
More informationPractice Problems for the Final
ECE-250 Algorithms and Data Structures (Winter 2012) Practice Problems for the Final Disclaimer: Please do keep in mind that this problem set does not reflect the exact topics or the fractions of each
More informationHaskell Overview II (2A) Young Won Lim 9/26/16
(2A) Copyright (c) 2016 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published
More information3.6.2 Generating admissible heuristics from relaxed problems
3.6.2 Generating admissible heuristics from relaxed problems To come up with heuristic functions one can study relaxed problems from which some restrictions of the original problem have been removed The
More informationINTRODUCTION TO HASKELL
INTRODUCTION TO HASKELL PRINCIPLES OF PROGRAMMING LANGUAGES Norbert Zeh Winter 2018 Dalhousie University 1/81 HASKELL: A PURELY FUNCTIONAL PROGRAMMING LANGUAGE Functions are first-class values: Can be
More informationLecture 5: More Examples/Applications of Quasirandom Graphs
Random and Quasirandom Graphs Instructor: Padraic Bartlett Lecture 5: More Examples/Applications of Quasirandom Graphs Week 4 Mathcamp 2012 In our last class, we saw that the Paley graphs were an example
More informationCHAPTER 11 Trees. 294 Chapter 11 Trees. f) This is a tree since it is connected and has no simple circuits.
294 Chapter 11 Trees SECTION 11.1 Introduction to Trees CHAPTER 11 Trees 2. a) This is a tree since it is connected and has no simple circuits. b) This is a tree since it is connected and has no simple
More informationThe University of Nottingham
The University of Nottingham SCHOOL OF COMPUTER SCIENCE A LEVEL 2 MODULE, SPRING SEMESTER 2013-2014 G54FOP FOUNDATIONS OF PROGRAMMING Time allowed 2 hours Candidates may complete the front cover of their
More informationQueue. COMP 250 Fall queues Sept. 23, 2016
Queue Last lecture we looked at a abstract data type called a stack. The two main operations were push and pop. I introduced the idea of a stack by saying that it was a kind of list, but with a restricted
More informationAlgebra of Sets. Aditya Ghosh. April 6, 2018 It is recommended that while reading it, sit with a pen and a paper.
Algebra of Sets Aditya Ghosh April 6, 2018 It is recommended that while reading it, sit with a pen and a paper. 1 The Basics This article is only about the algebra of sets, and does not deal with the foundations
More informationParallel Computation: Many computations at once, we measure parallel time and amount of hardware. (time measure, hardware measure)
CMPSCI 601: Recall From Last Time Lecture 24 Parallel Computation: Many computations at once, we measure parallel time and amount of hardware. Models: (time measure, hardware measure) Parallel RAM: number
More informationPriority Queues and Binary Heaps
Yufei Tao ITEE University of Queensland In this lecture, we will learn our first tree data structure called the binary heap which serves as an implementation of the priority queue. Priority Queue A priority
More informationHaskell Types, Classes, and Functions, Currying, and Polymorphism
1 CSCE 314: Programming Languages Dr. Flemming Andersen Haskell Types, Classes, and Functions, Currying, and Polymorphism 2 Types A type is a collection of related values. For example, Bool contains the
More informationAlgorithm Design Techniques. Hwansoo Han
Algorithm Design Techniques Hwansoo Han Algorithm Design General techniques to yield effective algorithms Divide-and-Conquer Dynamic programming Greedy techniques Backtracking Local search 2 Divide-and-Conquer
More informationChapter-6 Backtracking
Chapter-6 Backtracking 6.1 Background Suppose, if you have to make a series of decisions, among various choices, where you don t have enough information to know what to choose. Each decision leads to a
More informationHaskell Overloading (1) LiU-FP2016: Lecture 8 Type Classes. Haskell Overloading (3) Haskell Overloading (2)
Haskell Overloading (1) LiU-FP2016: Lecture 8 Type Classes Henrik Nilsson University of Nottingham, UK What is the type of (==)? E.g. the following both work: 1 == 2 a == b I.e., (==) can be used to compare
More informationCS 341 Homework 1 Basic Techniques
CS 341 Homework 1 Basic Techniques 1. What are these sets? Write them using braces, commas, numerals, (for infinite sets), and only. (a) ({1, 3, 5} {3, 1}) {3, 5, 7} (b) {{3}, {3, 5}, {{5, 7}, {7, 9}}}
More informationAvailability versus consistency. Eventual Consistency: Bayou. Eventual consistency. Bayou: A Weakly Connected Replicated Storage System
Eventual Consistency: Bayou Availability versus consistency Totally-Ordered Multicast kept replicas consistent but had single points of failure Not available under failures COS 418: Distributed Systems
More informationSets 1. The things in a set are called the elements of it. If x is an element of the set S, we say
Sets 1 Where does mathematics start? What are the ideas which come first, in a logical sense, and form the foundation for everything else? Can we get a very small number of basic ideas? Can we reduce it
More informationSorting: Given a list A with n elements possessing a total order, return a list with the same elements in non-decreasing order.
Sorting The sorting problem is defined as follows: Sorting: Given a list A with n elements possessing a total order, return a list with the same elements in non-decreasing order. Remember that total order
More informationInformatics 1 Functional Programming Lecture 11. Data Representation. Don Sannella University of Edinburgh
Informatics 1 Functional Programming Lecture 11 Data Representation Don Sannella University of Edinburgh Part I Complexity t = n vs t = n 2 10.4 9.6 8.8 8 7.2 6.4 5.6 4.8 4 3.2 2.4 1.6 0.8 0 0.8 1.6 2.4
More informationLecture 4: Higher Order Functions
Lecture 4: Higher Order Functions Søren Haagerup Department of Mathematics and Computer Science University of Southern Denmark, Odense September 26, 2017 HIGHER ORDER FUNCTIONS The order of a function
More informationMulticore programming in Haskell. Simon Marlow Microsoft Research
Multicore programming in Haskell Simon Marlow Microsoft Research A concurrent web server server :: Socket -> IO () server sock = forever (do acc
More informationAssignment 1. Stefano Guerra. October 11, The following observation follows directly from the definition of in order and pre order traversal:
Assignment 1 Stefano Guerra October 11, 2016 1 Problem 1 Describe a recursive algorithm to reconstruct an arbitrary binary tree, given its preorder and inorder node sequences as input. First, recall that
More informationExam for 2G1512 DatalogiII, Apr 12th
Exam for 2G1512 DatalogiII, Apr 12th 2002 09.00 14.00 Dept. of Microelectronics and Information Technology April 11, 2002 Allowed materials You are allowed to bring the course book and all handouts to
More informationCS 188: Artificial Intelligence. Recap Search I
CS 188: Artificial Intelligence Review of Search, CSPs, Games DISCLAIMER: It is insufficient to simply study these slides, they are merely meant as a quick refresher of the high-level ideas covered. You
More informationProgramming II (CS300)
1 Programming II (CS300) Chapter 12: Heaps and Priority Queues MOUNA KACEM mouna@cs.wisc.edu Fall 2018 Heaps and Priority Queues 2 Priority Queues Heaps Priority Queue 3 QueueADT Objects are added and
More informationList Processing in Ocaml
CS251 Programming Languages Handout # 14 Prof. Lyn Turbak February 2, 2007 Wellesley College List Processing in Ocaml Given a list of integers ns, suppose we want to return a new list of the same length
More informationCombinational Circuits Digital Logic (Materials taken primarily from:
Combinational Circuits Digital Logic (Materials taken primarily from: http://www.facstaff.bucknell.edu/mastascu/elessonshtml/eeindex.html http://www.cs.princeton.edu/~cos126 ) Digital Systems What is a
More information1 Undirected Vertex Geography UVG
Geography Start with a chip sitting on a vertex v of a graph or digraph G. A move consists of moving the chip to a neighbouring vertex. In edge geography, moving the chip from x to y deletes the edge (x,
More informationState Monad (3D) Young Won Lim 9/25/17
Copyright (c) 2016-2017 Young W. Lim. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published
More informationLecture 2: List algorithms using recursion and list comprehensions
Lecture 2: List algorithms using recursion and list comprehensions Søren Haagerup Department of Mathematics and Computer Science University of Southern Denmark, Odense September 12, 2017 Expressions, patterns
More informationFINAL EXAMINATION. COMP-250: Introduction to Computer Science - Fall 2010
STUDENT NAME: STUDENT ID: McGill University Faculty of Science School of Computer Science FINAL EXAMINATION COMP-250: Introduction to Computer Science - Fall 2010 December 20, 2010 2:00-5:00 Examiner:
More informationShell CSCE 314 TAMU. Haskell Functions
1 CSCE 314: Programming Languages Dr. Dylan Shell Haskell Functions 2 Outline Defining Functions List Comprehensions Recursion 3 Conditional Expressions As in most programming languages, functions can
More informationCSE341: Programming Languages Lecture 9 Function-Closure Idioms. Dan Grossman Fall 2011
CSE341: Programming Languages Lecture 9 Function-Closure Idioms Dan Grossman Fall 2011 More idioms We know the rule for lexical scope and function closures Now what is it good for A partial but wide-ranging
More information