再譯《A *路徑搜索入門》之一

※  外語很差湊合着看吧,呵呵  php

A *路徑搜索node

A* Pathfinding for Beginnersweb

 

帕特里克·萊斯特表於2003108日下午833人工智能算法

By Patrick Lester Published Oct 08 2003 08:33 PM in Artificial Intelligenceless

 

若是您發現本文中包含錯誤或問題,致使沒法讀取它(丟失的影像或文件,受損代碼,不正確的文本格式等),請聯繫編輯,以便能更正。感謝您幫助咱們改善此資源。ide

If you find this article contains errors or problems rendering it unreadable (missing images or files, mangled code, improper text formatting, etc) please contact the editor so corrections can be made. Thank you for helping us improve this resource.佈局

 

更新2005718this

Updated July 18, 2005人工智能

 

篇文章已被翻成阿巴尼亞語,中文,法,德,葡萄牙,俄和西班牙。其餘的翻迎的。篇文章的底部件地址。spa

This article has been translated into Albanian, Chinese, French, German, Portuguese, Russian, and Spanish. Other translations are welcome. See email address at the bottom of this article.

 

於初學者 A *A-,譯者注:老外讀A-star)算法可能有些在網上有不少解A *的文章,大多數寫給有A *礎的篇文章是真正的初學者。

The A* (pronounced A-star) algorithm can be complicated for beginners. While there are many articles on the web that explain A*, most are written for people who understand the basics already. This article is for the true beginner.

 

本文並不試圖成爲一主威著做。相反,它描述的基本原並準你去閱讀全部其餘材料和明白他什麼。在篇文章的末尾提接到一些最好的來一步閱讀

This article does not try to be the definitive work on the subject. Instead it describes the fundamentals and prepares you to go out and read all of those other materials and understand what they are talking about. Links to some of the best are provided at the end of this article, under Further Reading.

 

最後,篇文章不是具體方案。你應該裏的任何算機言。正如你所指望的,然而, 篇文章的末尾,我有一個接到本文的示例程序。例子包中包含兩個版本:一個是C++,一個Blitz Basichttp://www.blitzbasic.com/Home/_index_.php。它包含可行文件,若是你只是想看看A *的行

Finally, this article is not program-specific. You should be able to adapt what's here to any computer language. As you might expect, however, I have included a link to a sample program at the end of this article. The sample package contains two versions: one in C++ and one in Blitz Basic. It also contains executables if you just want to see A* in action.

 

可是我愈來愈提早。從開始......

But we are getting ahead of ourselves. Let's start at the beginning ...

 

介:搜索區域

Introduction: The Search Area

 

假設有想要A點到達B點。設有牆把AB點隔開示,表示起點A,用表示B並用填充的表示中間的那面

Let's assume that we have someone who wants to get from point A to point B. Let's assume that a wall separates the two points. This is illustrated below, with green being the starting point A, and red being the ending point B, and the blue filled squares being the wall in between.

[1]

[Figure 1]

 

首先,我搜索區域分割方形網格。這叫簡化搜索區域,是路徑搜索的第一步。種方法搜索區域簡化一個二。數中的每一個元素表明網格裏的一個方塊,它的地位被記錄爲行走和不可行走。從AB通過的方塊叫路徑一旦路徑被找到發現就能夠從一個正的中心到下一個中心,直到到達目

The first thing you should notice is that we have divided our search area into a square grid. Simplifying the search area, as we have done here, is the first step in pathfinding. This particular method reduces our search area to a simple two dimensional array. Each item in the array represents one of the squares on the grid, and its status is recorded as walkable or unwalkable. The path is found by figuring out which squares we should take to get from A to B. Once the path is found, our person moves from the center of one square to the center of the next until the target is reached.

 

些中心點被稱點」。在看別的路徑搜索資料時常會看到討論節點。什麼不叫它們方格呢?因有可能路徑搜索積不分割成方格。能夠是矩形,六形,三角形或任何形狀,真的。點能夠任何形狀表示- 在中心或者沿着邊緣,或其餘任何地方。不,我使用,因它是最簡單的。

These center points are called "nodes". When you read about pathfinding elsewhere, you will often see people discussing nodes. Why not just call them squares? Because it is possible to divide up your pathfinding area into something other than squares. They could be rectangles, hexagons, triangles, or any shape, really. And the nodes could be placed anywhere within the shapes – in the center or along the edges, or anywhere else. We are using this system, however, because it is the simplest.

 

開始搜索

Starting the Search

 

一旦搜索區域化成管理數量的點,就像上面所說的網格佈局,下一步就是行搜索找到最短路徑。A開始檢查方塊並向外普及搜索,直到找到目

Once we have simplified our search area into a manageable number of nodes, as we have done with the grid layout above, the next step is to conduct a search to find the shortest path. We do this by starting at point A, checking the adjacent squares, and generally searching outward until we find our target.

 

們執行如下操做開始搜索:

We begin the search by doing the following:

 

1.起點A開始,並將添加到 「開列表」。開列表有點像一張購物清儘管列表裏只有一個目,但之後會有更多。它包含了可能是你想要的,也可能不是。基本上,是須要被檢查的方的列表。

1.Begin at the starting point A and add it to an "open list" of squares to be considered. The open list is kind of like a shopping list. Right now there is just one item on the list, but we will have more later. It contains squares that might fall along the path you want to take, but maybe not. Basically, this is a list of squares that need to be checked out.

 

2.尋找起點全部到達或可行走的方,忽略有,水或其餘非法地形。添加到開列表。於每個方,保存A點做它們的「父方」。當要追溯路徑時父方格西是很重要的。稍後會解它。

2.Look at all the reachable or walkable squares adjacent to the starting point, ignoring squares with walls, water, or other illegal terrain. Add them to the open list, too. For each of these squares, save point A as its "parent square". This parent square stuff is important when we want to trace our path. It will be explained more later.

 

3.從開列表刪除開始A,並將添加到不須要再次尋找的「關閉列表」。

3.Drop the starting square A from your open list, and add it to a "closed list" of squares that you don't need to look at again for now.

 

一點上,你應該下面插形象。在該圖中,位於中心的深色方就是開始方。它是色,以指示已被添加到封列表。在開啓列表的全部相塊進檢查,而且來框記它們。每一個方格都有一個灰色的指指回它們的父方格,也就是開始方

At this point, you should have something like the following illustration. In this illustration, the dark green square in the center is your starting square. It is outlined in light blue to indicate that the square has been added to the closed list. All of the adjacent squares are now on the open list of squares to be checked, and they are outlined in light green. Each has a gray pointer that points back to its parent, which is the starting square.

 

[2]

[Figure 2]

 

下一步,我們選擇了開啓列表上的一個,並或多或少重複前面的,以下所述。可是,我們選擇哪方?一個與最小F

Next, we choose one of the adjacent squares on the open list and more or less repeat the earlier process, as described below. But which square do we choose? The one with the lowest F cost.

相關文章
相關標籤/搜索