A LGORITHMS & D ATA S TRUCTURES FOR G AMES Lecture 3 1 Minor Games Programming.

Post on 21-Dec-2015

217 views 1 download

Transcript of A LGORITHMS & D ATA S TRUCTURES FOR G AMES Lecture 3 1 Minor Games Programming.

ALGORITHMS & DATA STRUCTURES FOR GAMES

Lecture 3

1

Minor Games Programming

NEXT AD COLLEGE

Monday

2

ALGORITHMS AND DATA STRUCTURES

Feedback previous lectures Theory: Dynamic Programming Theory: Randomized Algorithms Theory: Backtracking

3

Jan Verhoevenj.verhoeven@windesheim.nl

THEORY: DYNAMIC PROGRAMMING

10.3 Dynamic Programming 10.3.1 Using a Table instead of Recursion

4

10.3 DYNAMIC PROGRAMMING

Rewrite the recursive algorithm as a non recursive algorithm that systematically records the answers to the subproblems in a table.

5

10.3.1 USING A TABLE INSTEAD OF RECURSION

The natural recursive program to compute the Fibonacci numbers is very inefficient. (Running time is exponential).

6

10.3.1 USING A “TABLE” INSTEAD OF RECURSION

a linear solution

7

FIBONACCI

8

ANOTHER VERY NICE EXAMPLESolve the recurrence:

with C(0) = 1

And what about C(2) and C(3)?

9

FIGURE 10.43 RECURSIVE SOLUTION(WHAT IS THE RUNNING TIME?)

10

FIGURE 10.45 SOLUTION WITH A TABLE (WHAT IS THE RUNNING TIME?)

11

RUNNING TIME

12

THEORY: RANDOMIZED ALGORITHMS

10.4 Randomized Algorithms 10.4.2 Skip Lists

And extra topic: How about Primes….

13

10.4 RANDOMIZED ALGORITHMS

At least once during the algorithm, a random number is used to make a decision. The running time depends on the particular input, but also on the random numbers that occur.

A sample application is: 10.4.2 Skip Lists

14

10.4.2 SKIP LISTS

A data structure that supports both searching and insertion in O(log N) expected time.

Also see:http://en.wikipedia.org/wiki/Skip_list

15

LINKED LISTS WITH EXTRA LINKS TO CELLS AHEAD

16

SEARCHING FOR THE VALUE OF 8

17

A SKIP LIST

18

BEFORE AND AFTER AN INSERTION IN A SKIP LIST

19

BEAUTIFUL APPLETS !!Please run:http://people.ksp.sk/~kuko/bak/big/

And you might take a look at:http://iamwww.unibe.ch/~wenger/DA/SkipList/

20

PRIMES

Do you know a method to generateprime numbers?

See: Sieve_of_Eratosthenes21

PRIMES

bool isPrime (const long aNumber){// Do you know a method to test// whether a number is prime?

}

And what about the running time ?

22

PRIMES

Long nextPrime (const long aPrime){

// Do you know a method to generate// the next prime following aPrime?

}

And what about the running time ? 23

WELL KNOWN STUDY: A RANDOM WALK

Imagine now a drunkard walking randomly in a city.

The city is infinite and arranged in a square grid, and at every intersection, the drunkard chooses one of the four possible routes (including the one he came from) with equal probability.

Formally, this is a random walk on the set of all points in the plane with integer coordinates.

24

RANDOM WALK (2)

Will the drunkard ever get back to his home from the bar?

It turns out that he will (almost surely).

25

RANDOM WALK (3)

26

ALGORITHMS AND DATA STRUCTURES FOR GAMES

Backtracking

BACKTRACKING IS A FORM OF RECURSION.

The usual scenario is that you are faced with a number of options, and you must choose one of these.

After you make your choice you will get a new set of options; just what set of options you get depends on what choice you made.

This procedure is repeated over and over until you reach a final state.

If you made a good sequence of choices, your final state is a goal state; if you didn't, it isn't.

28

AN EXAMPLE …

29

THE STEPS:

Starting at Root, your options are A and B. You choose A.

At A, your options are C and D. You choose C. C is bad. Go back to A. At A, you have already tried C, and it failed.

Try D. D is bad. Go back to A. At A, you have no options left to try. Go back

to Root. At Root, you have already tried A. Try B. At B, your options are E and F. Try E. E is good. Congratulations!

30

IN PSEUDO CODE

boolean solve(Node n){if n is a leaf node { if the leaf is a goal node,

return true else return false }else { for each child c of n { if solve(c) succeeds,

return true } return false }}

31

CINDY’S PUZZLE, THE GOAL IS TO REVERSE THE POSITIONS OF THE MARBLES:

32

The black marbles can only move to the right, and the white marbles can only move to the left (no backing up). At each move, a marble can either:• Move one space ahead, if that space is clear, or• Jump ahead over exactly one marble of the opposite

color, if the space just beyond that marble is clear.

CINDY’S PUZZLE

33

SEE: ..\..\Projects\BacktrackingCindyCS\BacktrackingCindyCS.sln

A LITTLE EXERCISE

Can you describe an backtracking algorithm to solve the next problem?

The problem is to write an integer as the sum of 4 squares. This is always possible !

So: 70 = 64 + 4 + 1 + 1 And: 12345 = 11664 + 676 + 4 + 1

See: ..\..\Projects\Backtracking4SquaresCS\Backtracking4SquaresCS.sln

34

bool solve(int value, int num) { if (value == 0) return true; // Are we

done?

// we have no more numbers to work with if (num == 0) return false;

// Start at 1 and work up for (int i = 1; i * i <= value; i++) { int sq = i * i; // Place guess if (solve(value - sq, num - 1))

return true; }

return false; // Nothing worked: Backtrack }

35

ANOTHER EXAMPLE: SUDOKU

See: ..\..\Projects\SudokuCS\SudokuCS.sln

36

HOMEWORK AND PRACTICE

Study the slides and the corresponding text in your study book.

Try to program one of the backtracking examples (Cindy’s puzzle, Sudoku, eight queens)

The practice is about a backtracking problem to be solved (using C#) 38