# Dynamic Positioning Based on Voronoi Cells (DPVC)

**ABSTRACT** In this paper we are proposing an approach for flexible positioning of players in Soccer Simulation in a Multi-Agent environment.

We introduce Dynamic Positioning based on Voronoi Cells (DPVC) as a new method for players’ positioning which uses Voronoi Diagram for distributing agents in the field. This method also uses Attraction Vectors that indicate agents’ tendency to specific objects in the field with regard to the game situation and players’ roles. Finally

DPVC is compared with SBSP as the conventional method of positioning.

**0**Bookmarks

**·**

**83**Views

- [Show abstract] [Hide abstract]

**ABSTRACT:**This paper describes the current status of the Virtual Werder 3D team. Since last year's competition many eorts have been initiated by our team. A selection thereof is presented in this paper. Major changes include a new timing model, the use of a particle filter for the estimation of positions and velocities of moving objects at arbitrary times, and a new dynamic reposition skill based on Voronoi cells. -
##### Chapter: Dynamic Positioning Method Based on Dominant Region Diagram to Realize Successful Cooperative Play

[Show abstract] [Hide abstract]

**ABSTRACT:**In this paper, we propose a new technique to compute, in real time, the positions of robots in a cooperative play such as the pass-and-shoot play. To evaluate the positioning of the robot, we use the Dominant Region (DR) diagram, which is a kind of a Voronoi diagram. In the DR diagram, the soccer field is divided into regions, each of which shows an area that a robot can reach faster than the other robots. This division is based on the time of arrival while the division by the Voronoi diagram is based on the distance of arrival. Though the DR diagram plays a primary role in the positioning of the robots, it has a serious problem of taking much computation time. To overcome this problem, we show an approximate calculation procedure to obtain the DR diagram, which realizes the real time computation, i.e. a computation within a frame time. Applying the approximate dominant diagram to the positioning of the robots for the pass play, we show, by the simulation study, • the DR diagram can be calculated in real time, • an appropriate position for the pass play can be obtained.01/1970: pages 488-495; - SourceAvailable from: Saeed Masoudnia
##### Article: Team Description Paper

Nima Aghaeepour, Alireza Fotuhi Siahpirani, Saeed Masoudnia, Meysam Bastani, Zahra Delafkar, Fatemeh Miri Disfani, Serveh Mam Ghaderi, Shahin Kamali, Sepideh Pashami, Alireza Fotuhi[Show abstract] [Hide abstract]

**ABSTRACT:**UTUtd-3D 2006 is based on experience of UTUtd-3D 2005 (1). Last year the team worked on high level skills especially on position- ing, ball handling, decision making(2). As the server status for the 2006 competition is cleared recently, this paper mostly describes changes since 2005 in the architecture of the UTUtd-3d team and the planned changes for 2006 competition. Most important changes are: 1. Improvement of high level skills (shoot, pass, dribble). 2. Implementation of a new sys- tem to determine team's strategy and players positioning according to the way opponents play. We also describe our efiort on a controller for the legged agents.

Page 1

Dynamic Positioning Based on Voronoi Cells

(DPVC)

HesamAddin Torabi Dashti, Nima Aghaeepour, Sahar Asadi, Meysam Bastani,

Zahra Delafkar, Fatemeh Miri Disfani, Serveh Mam Ghaderi, Shahin Kamali,

Sepideh Pashami, and Alireza Fotuhi Siahpirani

Math and Computer Science Department,

Faculty of Science, University of Tehran, Iran

{dashti, nimaa, asadi, bastani, delafkar, fmiri, ghaderi,

skamali, pashami, fotuhi}@khayam.ut.ac.ir

http://www.fos.ut.ac.ir/robocup

Abstract. In this paper we are proposing an approach for flexible po-

sitioning of players in Soccer Simulation in a Multi-Agent environment.

We introduce Dynamic Positioning based on Voronoi Cells (DPVC) as

a new method for players’ positioning which uses Voronoi Diagram for

distributing agents in the field. This method also uses Attraction Vectors

that indicate agents’ tendency to specific objects in the field with regard

to the game situation and players’ roles. Finally DPVC is compared with

SBSP as the conventional method of positioning.

1Introduction

In Multi-Agent Systems collaboration between individual agents has a critical

role, since each agent decides and acts independently in order to achieve the com-

mon goal. In RoboCup Soccer Simulation each agent receives information from

environment and builds a world model. Using this world model, agents are able

to recognize their position in the field toward other agents. Each agent should

cooperate with its team by selecting an appropriate action. Thus there should

be a strategy which leads agents to take the best action. The most important

aspects of Multi-Agent soccer strategy are as follow:

– The strategy must specify the formation of the team and the position of the

agents inside this formation.

– The strategy must define different roles inside a formation and assign these

roles to various player positions.

– For each role, the strategy must specify the behavior which is associated

with the player’s current role.

– The strategy must incorporate information about how an agent should adapt

its behavior to the current situation.

– The strategy must indicate how each player should manage its battery during

the game [1].

A. Bredenfeld et al. (Eds.): RoboCup 2005, LNAI 4020, pp. 219–229, 2006.

c ? Springer-Verlag Berlin Heidelberg 2006

Page 2

220H.T. Dashti et al.

To achieve these goals, we must distinct different players’ states. There is always

one player who is associated with ball and obeys a different decision method

based on the strategy; other agents should move toward their best position in

the field. So positioning is vital and should be carefully implemented in the

strategy. The most popular method for dynamic positioning in RoboCup Soccer

Simulation is SBSP (Situation Based Strategic Positioning)[2] which is presented

by FC Portugal team. This method defines specific target positions for agents

who do not possess the ball; these target positions are calculated with regard to

the current formation of the team and roles of agents in this formation.

Although SBSP is a very powerful method for positioning it has some re-

strictions, one of them is the obligation to define Home Positions. In this paper

we present a simple and flexible positioning method which we call Dynamic

Positioning based on Voronoi Cells (DPVC). DPVC uses Voronoi Diagram to

calculate target positions of agents.

Section 2 describes basics of positioning also shows restrictions of SBSP. In

Sec. 3 Voronoi Diagram is introduced and a new algorithm for computing Voronoi

Cells is presented. In Sec. 4 we show how to use a simple version of DPVC for

positioning. In Sec. 5 we apply attraction vectors and study the behavior of

DPVC. Section 6 includes some experimental results and comparisons between

SBSP and DPVC.

2Basics of Positioning

As mentioned before, in SBSP players calculate their target position by getting

the game situation, formation of team, players’ roles and their current position

as input.

Situation of the game indicates rate of offence or defense considering ball

position, position of teammates and opponents. Formation is a set of information

each player needs to do positioning. It can be defined as an arrangement of

players in the field which assigns a role to each agent. Role of an agent specifies

characteristicsof that agent regardingto the team formation and current position

of the agent. Generally formations are used to keep players distributed in the

field, to do so SBSP defines a home position for each role in the field. An agent

determines its target position by computing a weighted sum of its home position

and current position of the ball as an attraction point [1]. It is important to note

that each role has specific attraction to ball. Also each player has a boundary

area that can not exceed outside it.

For the player who is associated with the ball, no home position is defined

and its movement is not bounded in a closed area. If such a player looses the

ball, it has to move into its teammates’ regions to return to its own region. This

extra movement is a waste of battery.

A solution for this problem is to switch positions within a formation. However,

switching positions can also cause increased player movement if a player has to

move across the field to occupy its new position [5].

Page 3

Dynamic Positioning Based on Voronoi Cells (DPVC)221

In most conventional positioning methods there is no significant change in

players relative positions; because in each formation number of players getting

the same role is fixed. This number changes by switching to another formation.

Considering this fact, number of players in roles is predictable for the opponent

team to adapt its strategy accordingly if it is provided with a coach.

The above problems can be solved by omitting home positions and formations

as it is done in DPVC. DPVC computes attractions, roles, and target positions

without using formation. It causes an increase in the importance of attractions

for controlling agents to implement strategy.

In DPVC each agent has specific attractions to special objects like ball, op-

ponent goal and etc. These attractions are presented by force vectors, applied to

the agents. In our implementation of DPVC, vector sum of different attraction

vectors determines an agent’s movement; this vector is a function of different

parameters in the field including ball position, opponent and teammate goal po-

sitions in the field. This means that attraction vectors show tendency of players

to specific objects in the field. Attraction vectors are not the same for different

roles; they are also influenced by game situation.

By removing formations, each agent’s movements wouldn’t be restricted in

a bounded region and agents may gather in specific locations. This is due to

the public attractions of some objects in the field. For example by applying

ball attraction, players may aggregate around the ball. Avoiding this problem,

players must repulse each other. To distribute players, we introduce a method

which is based on Voronoi Diagram.

3Voronoi Diagram

As mentioned before the method introduced in this paper for distributing agents

is based on Voronoi Diagram. It helps us to divide the field into 10 cells (a cell

for each player of the team except goalie). Since goalie has a different behavior, it

obeys a different positioning method. By computing center of each cell and tend-

ing agents toward the center of their cells, an acceptable method for distributing

agents in the field will be achieved. We now define Voronoi Diagram formally

and then present an adaptive algorithm to soccer situation for computing each

agent’s Voronoi Cell.

3.1Basics of Voronoi Diagram

If P = {p1,p2,...,pn} be a set of n distinct objects (sites) in the plane; Voronoi

Diagram of P will be the subdivision of the plane into n cells, one for each site

in P, with the property that a point q lies in the cell corresponding to a site pi

iff dist(q,pi) < dist(q,pj) for each pjwhen j ?= i [3].

Voronoi Diagram is usually used in situations where a plane should be parti-

tioned into cells of influence, as it will be discussed in the field of soccer simula-

tion. It can be shown that the Voronoi Diagram is a set of subdivisions whose

edges are straight line segments. It means that the Voronoi Diagram is a set of

convex polygons.

Page 4

222H.T. Dashti et al.

We can use Voronoi Diagram to have a dynamic positioning. Voronoi Cell of

an agent is defined as the partition that contains the agent. In the first step we

need an algorithm for computing each agent’s Voronoi Cell.

3.2Computing Voronoi Diagram

The most popular algorithm for computing Voronoi Diagram is introduced by

Steve Fortune [3]. Although Fortune Algorithm computes Voronoi Diagram of n

object in O(nlogn) [3] and this makes it an ideal algorithm for most applications

but it has some complexities due to use of data structures like priority queues

and binary trees. On the other hand in a Multi-Agent System for each agent we

need only its own Voronoi Cell whereas Fortune algorithm makes all the cells.

Because of these problems in DPVC instead of Fortune Algorithm a new method

is used which is more compatible with a Multi-Agent System. Time complexity

of this method is O(n2). Although this is worse than Fortune Algorithm, we

compute Voronoi Cells for only 10 agents so optimal time of Fortune Algorithm

is not an important positive point.

We developed an algorithm (CalculateVC) that computes Voronoi Cell of

agents separately every sense. Thus instead of calculating Voronoi Diagram for

all agents, each player calculates its related cell.

1

2

3

4

5

6

1

2

3

4

5

6

1

2

3

4

5

6

1

2

3

4

5

6

1

2

3

4

5

6

1

2

3

4

5

6

a

b

c

d

e

f

Fig.1. Steps for computing the Voronoi Cell of agent 3

To compute the cell of agent i (1 ≤ i ≤ 10), at the beginning of the algorithm

we consider the entire field as cell of this agent (Fig. 1) then in a greedy method

this initial Cell will be abounded 9 times to get the desired result in a way that

the perpendicular bisectors of agent i and other 9 agents are constructed. Each

of these lines intersects the cell of agent i at most in two points, resulting in two

polygons that are both convex. From these polygons the one that contains agent

i will be considered as the cell of agent i. Figure 1 shows the consecutive steps

of this algorithm.

Page 5

Dynamic Positioning Based on Voronoi Cells (DPVC)223

Alg.1. Computing Voronoi Cell of agent i

Algorithm CalculateVC (agent i):

// Input: an agent indexed i

// Output: a polygon (cell) as the Voronoi Cell of input agent

// Consider the entire field as the initial Voronoi Cell of i

celli← all the field

Point Pi← position of i

for all agents j ?= i do

Point Pj← position of agent j

Line L ← perpendicular bisector of Piand Pj

Intersect L with celli

if L intersects celliin 0 or 1 points then

Continue

end if

// L cuts celliinto two polygons (left and right)

Polygon cell0← right polygon

Polygon cell1← left polygon

if cell0contains Pithen

celli← cell0

else

celli← cell1

end if

end for

CalculateVC makes 9 intersection lines. Calculating intersection points of a

line and a convex polygon with k edges needs O(k) time using Sutherland-

Hodgeman Algorithm[4]. Since there are 9 intersection lines, k is always less

than 9. As a result, time complexity of CalculateVC is O(9 ∗ 9).

4Dynamic Positioning Based on Voronoi Cells (DPVC)

In DPVC for each agent we use its Voronoi Cell to present a vector to tend that

agent in a direction for repulsing its teammates, this vector is called Voronoi

Vector. Voronoi Vector of each agent will be combined by all attraction vectors

of that agent and the result is the force vector that should be applied to the

agent in each sense. It means that Voronoi Vectors’ duty is to distribute agents

in the field. We now explain how to use Voronoi Cells to achieve a method for

distributing agents. In the first step for agent i (1 ≤ i ≤ 10) the Voronoi Cell is

computed (see Alg.1). This cell is a convex polygon with kiedges. In the second

step center of this cell is computed using algorithms based on computational

geometry. We can define the center of a simple polygon as the center of mass

of a two dimensional object having a shape like that polygon , assuming that

the density is the same in all parts of the object. The vector from an agent’s

Page 6

224H.T. Dashti et al.

position toward the center of its Voronoi Cell is defined as the Voronoi Vector

of that agent.

According to the definition of Voronoi Cell we can approximate compression

(density) of other agents around an agent by the space of that agent’s Voronoi

Cell. If this area is increased, the compression of the other agents near that cell

(agent) will be decreased. The relative positioning (direction and distance) of

an agent toward the center of its cell shows the state of that agent in regards

to the other agents’ compression zone. If an agent is near to the center of its

cell, its distance from other agents is near optimal. For example in Fig. 2 (a)

cell of agent 1 is smaller than other cells, this means that the compression is

high around this cell. We can also see that the center of cell 1 is near to agent

1 so this agent is in the same distance from other agents (on the average) and

its relocation (in this sense) does not help to remove compression. Notice that

cell 5 has a wider area and as a consequence the compression is low around it.

We can also see that the agent 5 is far from center of its cell and it is near to

the compression zone so by moving agent 5 to the center of cell 5, compression

will be decreased. It is possible to verify this point for other agents. As it is

shown in Fig. 2 (b) and Fig. 2 (c) by moving the agents towards the center of

their cells, areas of the wider cells (like cell 5) decreases and areas of smaller

cells(like cell 1) increases. It is wise to consider the equality of Voronoi Cell

areas as a factor (or definition) for distribution, so in a sequence of senses the

agents get more distributed and this process continues until all the agents reach

a balance state. This means that the agents’ positions and the center of their

cells will be in the same point. In other word the Voronoi Vector will be zero

vector. To show that the agents reach a balance state after some senses, it is

necessary to define center of a polygon in such a way that by moving an agent

toward the center of its cell, summation of its distances from the other agents

increases. Defining center of mass as the center of a polygon (as it is suggested in

DPVC) satisfies this condition. With this definition, to show that agents reach

equivalency we use these notations: dij= distance between agent i and agent j,

Pi

the definition for center of a polygon it is obvious that sumD has an ascendant

proceed. This means that: sensea< senseb→ sumDsensea< sumDsenseb. In

other word when agents move toward the center of their cells summation of

s=?10

j=1dijfor agent i in sense s, sumDs=?10

k=1pk

sin sense s, Considering

6

2

5

4

1

3

4

3

5

1

2

6

2

6

5

3

4

1

a

b

c

Fig.2. Agent’s movement toward their cell’s center divides the field into equal areas

Page 7

Dynamic Positioning Based on Voronoi Cells (DPVC)225

a

b

c

d

e

f

Fig.3. Agents’ movement using DPVC without attraction in rcssserver3D

distances between all players (sumD) rises. Also the field of match (generally

the rectangle on which we make Voronoi Diagram) is bounded , so this ascendant

proceeding should be stopped because sumD can not be more than a limit and

after t senses it will stop. In this sense agents get equivalency. This means that

if we force agents toward the center of their cells (by applying Voronoi Vectors)

they move in a path that results in an equivalence state.

The final shape of Voronoi Diagram after getting equivalency depends on the

initial formation of agents in the field, it means that different initial formations

result in different final shapes and there is no unique final shape. Figure 3 shows

agents movement using DPVC without attraction in RoboCup Soccer Simulation

Server 3D (rcssserver3D).

Observation shows that if Voronoi Diagram in final equivalence state has some

sort of symmetry toward X axis and Y axis the result will be a stable equivalence.

This means that if we apply a little change in the position of an agent (after

reaching the equivalency), in the next sense Voronoi Diagram will be formed

in a way to rectify this change. Thus the agent moves toward its last position

to get the equivalence again. Notice that it differs from defining a static point

like home position for agents, because if the agent’s displacement increases more

than a certain limit, DPVC probably tends agents to a new equilibrium state.

On the other hand in real conditions where attractions are applied, the system

is so dynamic that agents never get an equilibrium state, they are just forced in

an equivalency path that is updated in every sense.

If in the final equilibrium state the Voronoi Diagram becomes asymmetric,

the result will be an unstable equivalency, in other word a little change in the

Page 8

226H.T. Dashti et al.

position of an agent makes the other agents move continuously until they get a

new stable or unstable equilibrium. In this new equivalency, shape of Voronoi

Cells differs from last equilibrium state.

In our earlier discussion of distributing players, Voronoi Cells are constructed

from only teammates (except goalie) as Voronoi constructing points (sites); but

considering game situation and role of players, it is a good idea to distribute some

of agents in open spaces between opponents to make passes more successful. If

we add opponents’ positions to the set of points (sites) that construct Voronoi

Cells, the field will be partitioned into 21 cells i.e. a cell for each player in the field

except goalie of our team. By applying this method on the agents specified by

situation and role, their Voronoi Vectors will be constructed in a way that make

them to move toward opponent team’s openings. In other word these agents have

a kind of repulsion to both opponents and teammates.

5DPVC with Attraction

When we apply both attraction vector and Voronoi Vector, the agent has accept-

able behavior. In this condition the agents repulse each other (due to Voronoi

Vectors) and also attract certain objects like ball and opponent or teammate

goal with respect to the match situation (due to attraction vectors).

Attraction vectors prevent agents from getting equivalency, so some of them

are always moving but as it was indicated before a force (Voronoi Vector) is

applied to agents in a path to achieve equivalency and it distributes agents in

the field. For example when an agent recede center of its cell (because of its

attraction vectors), the Voronoi Vectors of other agents move them in a way to

fill that agent’s opening.

Voronoi Vectors should be applied in an optimal direction. It is not desirable

that direction of Voronoi Vectors change in two sequential senses; because this

probably makes agents to do unnecessary extra movements and this is a waste of

battery. This undesirable condition appears when the Voronoi Vector is applied

to agent in direction of getting an unstable equilibrium. However the probability

that this undesirable condition occurs is very low because agents should be in

very rare and scarce positions to be forced toward an unstable equivalency. On

the other hand matches are so dynamic and in each sense attraction vectors

change, so in real conditions agents’ movement is practically optimal. This fact

is adapted with physics too. the probability that a moving sphere stops on the

top of a hill (unstable equivalency) is so lower than stopping in the bottom of

hill (stable equivalency), because the equilibrium zone is so limited on the top.

Considering DPVC we have an efficient method that can distribute agents in

the field and also has some tools for implementation of a strategy. As explained

in Sec. 2 attraction vectors determine agents’ behavior. So it is important to

assign appropriate attraction vectors for each agent with respect to its role and

game situation. We must define attraction functions to set attraction vectors in

a way to coordinate the players. These functions get game situation and player’s

role as input. So in different situations, attraction vectors change; for example

Page 9

Dynamic Positioning Based on Voronoi Cells (DPVC)227

in offensive situation there is more attraction towards opponent’s goal. As a

conclusion team strategy can be applied by attraction functions.

Also in DPVC number of players in each role is not fixed and changes ac-

cording to the game situation. As a result agents’ behavior is more flexible and

it reduces the team’s predictability, and this is a positive point for DPVC in

comparison to SBSP.

As mentioned in Sec. 2 in conventional methods of positioning when formation

changes, agents have to move across the field to get their new positions. But in

DPVC, this extra movement is omitted due to the fact that destination of agents

is updated in each sense, also every sense Voronoi Cells of each agent is updated

and its shape changes continuously. These changes are concrete i.e. there is no

sudden change in the shape of Voronoi Cell of an agent in two consecutive senses.

As a result Voronoi Cells’ center of masses and consequently Voronoi Vectors

(destination of agents) change continuously.

Considering these facts it is obvious that DPVC method has properties of a

strategic positioning as are indicated in Sec. 1.

6 Experimental Results

Performance of a team not only depends on its positioning method but also

depends on other decision modules and efficiency in implementation of agents

skills. Accordingly it is difficult to define an appropriate criterion to evaluate the

positioning method. In order to survey the applied positioning, we compared two

similar teams using different positioning methods in rcssserver3D. One of these

teams uses SBSP as positioning method and the other uses DPVC. Since there

Fig.4. The figure shows statistical distribution for average number of passable players

of the team against Aria, using DPVC and SBSP methods for positioning. N is number

of the team opportunities to pass the ball. Numbers in x-axis show number of passable

players while numbers in y-axis are times that these numbers occur. As it is shown

while using DPVC in average there are five passable players whereas by using SBSP

there are only 3.6 passable players.

Page 10

228H.T. Dashti et al.

Table 1. Results when two similar teams using different positioning methods (DPVC

and SBSP) play against Aria team

DPVC SBSP

4.09

58.31% 56.92%

18.80% 22.15%

1.47% 1.26%

23.02% 19.98%

Average number of passable players

Ball in control of the team

Ball in own half

Ball in own penalty area

Ball in opponent penalty area

3.36

is usually little density of players near corners of the field, we improved DPVC

by restricting the initial Voronoi Cells of agents to a hexagonal surrounded by

the entire field rectangle.

To compare these two positioning methods we prepared two experiments. In

these experiments both teams play against Aria team the champion of RoboCup

2004 3D competitions. In the first experiment the number of passable players

around the ball when the ball is in possession of the testing team is measured.

Passable player is a player who has the opportunity to get the ball if it is passed.

So being a passable player is a matter of player’s distance from the ball. In our

experiment a player is defined to be passable if its distance from ball is less

than 20 meters. Fig. 4 is a statistical diagram of passable players of the team.

In Fig. 4 (a) DPVC is used as the positioning method, whereas in Fig. 4 (b) the

positioning is based on SBSP.

In the second experiment both the team using DPVC and the team using

SBSP are ran against Aria 10 times. Table .1 reports results of these two series

of tests. Records of this table show parameters defined to compare the influence

of each method of positioning on success of the team.

7 Conclusion

Although we have set the parameters of attraction functions experimentally, but

the experimental results show that DPVC behavior is acceptable as a method

of positioning. We hope to improve DPVC by applying a learning method like

Reinforcement Learning. Mathematical analysis of Voronoi Diagram when agents

(sites) are moving can be an open field of study.

We are also working on implementing attractions (e.g. attraction to goals)

indirectly with restricting initial Voronoi Cells of agents moving their vertical

bounds toward opponent goal or teammate goal.

In this paper we used a geometrical model (Voronoi Diagram) for distributing

agents; there are other models that can be used. For example we are surveying

some physical models in which agents can be assumed electrical charges in a 2D

space. In this way attractions can be assigned by defining positive or negative

charges for different objects; in this way potential field on the ground direct

agents (electrons) towards less potential points and cause agents’ movement in

the correct direction.

Page 11

Dynamic Positioning Based on Voronoi Cells (DPVC)229

References

1. de Boer, R., Kok, J.: The Incremental Development of a Synthetic Multi-Agent

System: The UvA Trilearn 2001 Robotic Soccer Simulation Team. M.S. Thesis.

Faculty of Science, University of Amsterdam (2002) Section 9.5.3

2. Reis, L.P., Lau, N., Oliveira, E.C., Situation Based Strategic Positioning for Co-

ordinating a Team of Homogeneous Agents, Springer’s Lecture Notes in Artificial

Intelligence, Vol.2103, Berlin (2001) 175–197

3. de Berg, M., van Kreveld, M., Overmars, M., Schwarzkopf, O., Computational Ge-

ometry, Springer–Verlag, New York (2000) Chapter 7

4. Sutherland, I.E., Hodgman, G.W., Reentrant polygon clipping, Communications of

the ACM, Vol.17 No.1 (1974) 32–42

5. Stone, P., Layered Learning in Multi-Agent Systems. PhD Thesis. School of Com-

puter Science, Carnegie Mellon University (1998) Chapter 3

#### View other sources

#### Hide other sources

- Available from Sepideh Pashami · May 22, 2014
- Available from cs.uwaterloo.ca