queue- 8 queen

20
DATA STRUCTURES AND ANALYSIS OF ALGORITHM The Subject: Queue Presented by: Ninh Bui L. Professor: Alvin D.

Upload: ha-ninh

Post on 25-May-2015

2.348 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Queue- 8 Queen

DATA STRUCTURES AND ANALYSIS OF ALGORITHMDATA STRUCTURES AND

ANALYSIS OF ALGORITHM

The Subject: Queue

Presented by: Ninh Bui L.Professor: Alvin D.

Page 2: Queue- 8 Queen

LOGOContents

Define Queue1

2

3

Operation on Queue

4 Some applications of the Queue

5

Implementation of a Queue

The 8-Queen Problem

Page 3: Queue- 8 Queen

LOGO1. Define Queues

Queue is way of organizing the objects stored in the form of a linear list of objects which the addition is made in the list and get the object that is made at the end of the list. Queue also called type list FIFO (First In First

Out - in front before)

Page 4: Queue- 8 Queen

LOGO1. Define Queues

Imaging

Amaging

Page 5: Queue- 8 Queen

LOGO Operations of Queues

The Basic Operations

B

E

C

D

A offer()

isempty()

poll()

peek()

size()

Page 6: Queue- 8 Queen

LOGO Operations of Queues

Queue Interface Structure

Method Behavior

E peek() Returns the object at the top of the queue without removing it. If the queue is empty, returns null.

E poll() Returns the object at the top of the queue and removes it. If the queue is empty, returns null.

boolean offer(E obj) Appends item obj at the end of queue. Returns true if successful false otherwise.

Page 7: Queue- 8 Queen

LOGO Operations of Queues

Jonathan

Dustin

Robin

Debbile

Rich

Dustin

Robin

Debbile

Rich

Dustin

Robin

Debbile

Rich

Phillip

Example:

- For Queue names in Figure (a), the

Values of names.isempty() is false:

String first=names.peek();

- Remove”Jonathan” from names in

Figure (b):

String temp=names.remove();

- Add”Phillip” to the end of the Queue in

Figure (c):

Names.offer(“Phillip”);

(a)

(c)(b)

Page 8: Queue- 8 Queen

LOGOImplementation of a Queue

Implementation of a Queue using Linkedlist

LinkedList implements the Queue interface, so you can declare:

• Queue<String> name = new LinkedList<String>();

Class ListQueue contains a collection of Node<E> Objects

Insertions are at the rear of a queue and removals are from the front

Page 9: Queue- 8 Queen

LOGOImplementation of a Queue

Implementing a Queue Using a Circular Array

• Need to know the index of the front, the index of the read, the size, and

the capacity.

• Mod can be used to calculate the front and Read positions in a circular

array, therefore avoiding comparisons to the array size

The read of the queue is:

(front + count - 1) % items.length;

where count is the number of items currently in the queue.

After removing an item the front of the queue is:

(front + 1) % items.length;

Page 10: Queue- 8 Queen

LOGOImplementation of a Queue

//Java CodeQueue<Integer> q = new ArrayBlockingQueue(6);

q.offer(6);

0 1 2 3 4 5

6

front = 0

count = 01

insert item at (front + count) % items.length

Page 11: Queue- 8 Queen

LOGOImplementation of a Queue

0 1 2 3 4 5

6

front = 0

4 7 3 8

count = 12345

//Java CodeQueue<Integer> q = new ArrayBlockingQueue(6);

q.offer(6);q.offer(4);q.offer(7);q.offer(3);q.ofer(8);

Page 12: Queue- 8 Queen

LOGOImplementation of a Queue

0 1 2 3 4 5

6

front = 0

4

make front = (0 + 1) % 6 = 1

1

7 3 8 9

count = 5434

make front = (1 + 1) % 6 = 2

2//Java Code

Queue<Integer> q = new ArrayBlockingQueue(6);

q.offer(6); q.offer(4);q.offer(7);q.offer(3);q.offer(8);

q.poll();//front = 1q.poll();//front = 2

q.offer(9);

Page 13: Queue- 8 Queen

LOGOImplementation of a Queue

//Java CodeQueue<Integer> q = new ArrayBlockingQueue(6);

q.offer(6);q.offer(4);q.offer(7);q.offer(3);q.offer(8);

q.poll();//front = 1q.poll();//front = 2

q.offer(9);q.offer(5);

0 1 2 3 4 5

front = 2

7 3 8 95

count = 45

insert at (front + count) % 6 = (2 + 4) % 6 = 0

Page 14: Queue- 8 Queen

LOGOAPPLICATIONS

The direct application

- Queue list

- Access to shared resources (Printers on the local

network)

- Most programming

The application does not directly

- Data structure algorithms support

- How components of other data structures

Page 15: Queue- 8 Queen

LOGO8-Queen Problems

The eight queens puzzle is the problem of placing eight chess queens on

an 8×8 chessboard so that no two queens attack each other. Thus, a

solution requires that no two queens share the same row, column, or

diagonal.

Page 16: Queue- 8 Queen

LOGO8-Queen Problems Using Back Tracking

Backtracking is a general algorithm

 for finding all (or some) solutions to

some computational problem, that

incrementally builds candidates to the

solutions, and abandons each partial

candidate c ("backtracks") as soon as it

determines that c cannot possibly be

completed to a valid solution

Page 17: Queue- 8 Queen

LOGOStep Revisited- Backtracking

1.Place the first queen in the left upper corner of the table.

2. Save the attacked positions

3. Move to the next queen(which can only be placed to the next line).

4. Search for a valid position. If there is one go to step 8.

5. There is not a valid position for the queen. Delete it ( the x coordinate is 0).

6. Move to the previous queen.

7. Go to step 4.

8. Place it to the first valid position.

9. Save the attacked posotions.

10. If the queen processed is the last stop otherwise go to step 3.

Page 18: Queue- 8 Queen

LOGOAlgorithm

public static void Try(int j){

for (int i = 1; i<=8; i++)

{

if (a[i]&& b[i+j]&&c[i-j+7])

{

x[j] = i;

a[i] = false;

b[i+j] = false;

c[i-j+7] = false;

if(j<8) Try(j+1);

else Print(x);

a[i] = true;

b[i+j] = true;

c[i-j+7] = true;

}

Page 19: Queue- 8 Queen

LOGOSolution

There are 92 solutions to the 8 x 8 problem.

Many of these are reflections and rotations of some of the

others, and if we de-duplicate against this, purists state that

there are only 12 distinct solutions (92 does not divide equally

by 12 because many of the reflections and rotations of a pure

solutions are not unique).

Page 20: Queue- 8 Queen