Алгоритм
Алгоритм |
|
1 |
while (NBT0) |
2 |
qc – текущая конфигурация МР. В качестве qT выбираем первую точку из BT . |
3 |
if (объект_захвачен:=Алгоритм1(qc, qT) =ДА) сообщить о том, что Obj захвачен в конфигурации qT ; go to 6; endif |
4 |
endwhile |
5 |
Сообщить о том, что Obj не может быть захвачен |
6 |
Конец Алгоритма |
Алгоритм1 получает значения в формате: Алгоритм1(qn, qT) и посвящён выяснению вопроса о том, является ли точка qT достижимой из qn в неизвестной среде.
Алгоритм1(qn, qT) |
|
1 |
МР находится в qn (назовём её «точка смены пути»). |
2 |
NBT:=Процедура2(); |
3 |
if (NBT = 0) объект_захвачен:=НЕТ; return(объект_захвачен); endif |
4 |
/*если в Z(qn) есть конфигурации, в которых может быть захвачен Obj*/ if (ZBT:=Z(qn)∩BT0) перейти в первую такую конфигурацию из BT; объект захвачен:=ДА; return (объект_захвачен); else go to 5; endif
|
5 |
/* Здесь осуществляется попытка планирования L(qn, qT) внутри Х*/
if
(number_config:=ПИ
(qn,qT, /*Если попытка не успешна*/ /*L(qn, qT) сгенерирован быть не может, то есть qT является недостижимой*/ NBT:=Процедура1(BT , N BT , qT); объект_захвачен:=НЕТ; return(объект_захвачен); endif /*Если попытка успешна, происходит переход на 6*/ |
6 |
МР начинает исполнение пути L(qn, qT). Исходов движения может быть два: 1) МР попадает в некоторую разрешённую точку qiT BT. В этом случае происходит присвоение qT:=qiT и объект_захвачен:=ДА и выполняется возврат в Алгоритм; 2) МР придёт в некоторую точку q*, следующая за которой является запрещённой. В этом случае n:=n+1; qn:=q* ; go to 1; |
7 |
Конец Алгоритма1 |
Теорема. Исполняя Алгоритм, МР решит Задачу за конечное число шагов.
Доказательство. Алгоритм выясняет достижимость конечного числа точек из BT. Выяснение достижимости в отношении каждой из точек qTBT осуществляется путём исполнения Алгоритма1. Отсюда видно, что исполнение Алгоритма сводится к конечному числу вызовов Алгоритма1. Поэтому, чтобы доказать, что Алгоритм будет исполнен за конечное число шагов, требуется показать, что исполнение Алгоритма1 для произвольных qn и qT будет осуществлено за конечное число шагов.
Алгоритм1 посвящён выяснению вопроса о том, является ли точка qT достижимой в неизвестной среде из точки смены маршрута qn или нет. В Алгоритме1, когда МР находится в точке qn, n=0,1,2,…, происходит запуск СС и запуск процедуры ПИ(). Если в результате исполнения этих действий точка qT будет определена как запрещённая (в силу налегания на препятствие, либо в силу недостижимости), произойдёт возврат в Алгоритм и для исследования достижимости будет назначена другая точка qTBT. Если в результате исполнения этих действий точка qT не будет определена как запрещённая, происходит генерация пути L(qn, qT) и МР начнёт исполнять этот путь. Исполнение этого пути может иметь два исхода: либо МР, не встретив на своём пути запрещённых точек, достигнет qT, она окажется разрешенной и тогда произойдёт успешное окончание работы Алгоритма, либо МР придёт в точку qn, n=1,2,…, следующая за которой будет запрещённой. Покажем, что все точки смены пути qn, n=0,1,2,… будут различными и их число будет конечным.
Покажем, что все точки смены пути различны. Предположим, что МР сменил путь, находясь в точке qs, а потом, находясь в точке qp, вновь сменил путь, то есть s<p. Покажем, что qsqp. Предположим сначала, что qs=qp и тогда Q(qs)=Q(qp). Поскольку МР сменил путь, находясь в точке qs, то он сгенерировал путь, не налегающий в том числе и на Q(qs). Но поскольку МР сменил путь в точке qp, то это означает, что его путь налёг на Q(qp)=Q(qs) (при этом qs=qp является центром r-окрестности точки qs=qp и следующая за ней точка является запрещенной), то есть Q(qp)=Q(qs) не было известным. Получили противоречие. Отсюда видно, что все точки смены пути различны.
Сделав отступление, заметим здесь, почему про каждую точку из Y(qn), n=0,1,2,… СС должна доставлять точную и достоверную информацию, где qn - точка смены пути. Предположим, что МР исполнял путь L(qn-1, qT) и прибыл в точку qn, которая оказалась точкой смены пути, поскольку следующая точка пути qA оказалась запрещенной (см. рис.2).
В точке qn сработала СС, но предположим, что она доставила информацию не обо всех точках из Y(qn), например, о точке qB не была доставлена информация. В точке qn МР сменил путь и продолжал двигаться. Пусть теперь МР исполняет путь L(qm, qT), m≥n. По прибытии в qn МР обнаружит, что qB является запрещенной и тогда qn вновь станет точкой смены пути. Поэтому мы и потребовали, чтобы в каждой точке смены пути qn, n=0,1,2,… СС доставляла точную и достоверную информацию о каждой точке из Y(qn).
Число точек смены пути конечно, поскольку конечно число точек в Х в силу введённой дискретизации.
Итак, число точек смены пути qn, n=0,1,2,… конечно и они все различны. В каждой точке qn осуществляется запуск СС и вызов процедуры ПИ, генерирующей L(qn, qT). В результате выполнения этих действий либо получаем информацию о том, что qT является запрещённой, либо нет. Если получаем, выяснение вопроса о достижимости qT заканчивается выводом о недостижимости qT. Если нет, происходит попытка исполнения пути L(qn, qT). Если и в последней точке смены пути qn точка qT не была квалифицирована как запрещённая, то будет сгенерирован L(qn, qT), этот путь будет исполнен и qT будет достигнута.
Таким образом, показано, что МР, исполняя Алгоритм1, за конечное число шагов либо достигнет точки qT, либо сделает вывод о том, что qT недостижима. Алгоритм сводится к исполнению Алгоритма1 конечное число раз. Отсюда видно, что, исполняя Алгоритм, МР решит Задачу за конечное число шагов. Теорема доказана.
