Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Недоліки: в більшості випадків надзвичайно великий об’єм обчислень, що суттєво збільшує час роботи програми.

Поиск

Наприклад. Пошук мінімального (максимального) елемента у масиві. Для п-елементів є величина порядку о(п). Для даної задачі чи не єдиний алгоритм розв'язку.

Задача „Комівояжер”. Дано п-пунктів, між якими є шляхи сполучення. Відомі вартості всіх сполучень, потрібно побудувати такий маршрут, що сполучає всі пункти лише по одному разу, при якому витрати будуть мінімальними.

Згідно з МПП перебираються всі можливі варіанти маршруту, для кожного з яких встановлюється цільова функція. В якості розв'язку буде той варіант, де функція мінімальна.

При програмуванні даної задачі за цим методом використовується п вкладених циклів по всіх можливих пунктах.

for i1=1 to n do

Begin

f:=0;

for i2:=1 to n do

if i2<>i1 then

Begin

f:=f+a[i1,i2]

for i3:=1 to n do

if i3<>i2 then

Begin

............

if in<>in-1 then

f:=f+a[in-1,in]

end;... end;

if f<min then min:=f;

end;

Даний фрагмент програми передбачає перебір всіх можливих значень величини f для різних варіантів маршрутів, змінна і має бути достатньо велике значення.

Цей варіант передбачає наявність всіх шляхів сполучень, тому у випадку відсутності частини шляхів сполучень потрібно передбачити вилучення тих варіантів, які не можливі за умовою.

Тема: Метод „розділяй і володарюй”.

Ідея методу полягає по розділені складної задачі на декілька окремих під задач, що має цілісну структуру. Такий поділ дозволяє отримати декілька простіших задач, кожну з яких можна окремо розв’язати. Остаточний розв'язок є об'єднанням всіх часткових розв’язків. Метод РІВ передбачає адитивний поділ. Кожна під задача має той самий характер, що і основна задача. Об'єднання часткових розв’язків виконується не комбінуванням а сумуванням.

Якщо ж поділ дає різноманітні задачі, метод виділення під цілей.

Наприклад. Обчислення площі п-кутника, що заданий координатами вершин.

П-кутник розбивається діагоналями на п-2 трикутники.

Зауваження. В розглянутому прикладі діагоналі проводяться з однієї вершини. Якщо многокутник опуклий, то вибір такої вершини для поділу на трикутники є довільним. У випадку не опуклого п-кутника в якості вершини поділу вибирається не опукла вершина. Якщо таких вершин буде декілька, то за методом РІВ п-кутник поділяється на к- та т-кутники між двома не опуклими вершинами.

Для перевірки не опуклості вершин можна скористатися одним з двох способів:

1. Якщо вершина і опукла, то пряма, проведена через вершини і та і+1 або і-1 та і матиме всі вершини лише по оду сторону, якщо ж вершина і є не опуклою, то відносно такої прямої решта вершин розмістяться по різні сторони. В програмній реалізації цього факту можна скористатися рівнянням прямої, що проходить через дві точки. .

Якщо підстановка замість вільних змінних по у та х координати решти вершин даватиме один і той же знак, то відповідна вершина буде опуклою.

Сортування масиву. Розділення його на частини, по окремим впорядкуванням їх та наступним злиттям частин.

Виявляється дешевше сортувати два під масиви і об’єднати їх у впорядкований, а ніж сортувати весь масив вцілому.

Злиття .

.

Фрагмент підпрограми має вигляд:

i:=1;

j:=1;

k:=1;

while (i<=N)and(j<=M)do

if a[i]<b[j] then

Begin

i:=i+1;

k:=k+1

End

Else

Begin

c[k]:=b[j];

j:=j+1;

k:=k+1;

end;

while i<=N do

Begin

c[k]:=a[i];

i:=i+1;

j:=k+1

end;

while j<=M do

Begin

c[k]:=b[j];

j:=j+1;

k:=k+1;

end;

Тема: Метод послідовних наближень.

В ряді випадків розв’язок задачі не може бути знайдений абсолютно точно. Це може мати місце лише, якщо вхідні дані задачі визначені не точно. В процесі обчислення виконується округлення або взагалі задача немає точного розв'язку. В таких випадках користуються методом послідовних наближень, при цьому вибирається або довільним чином, або за певною умовою початкове наближення розв'язку, потім будується деякий алгоритм, який дозволяє за кожним попереднім наближенням розв'язку отримати наступне наближення. Такий процес уточнень продовжується до тих пір, поки буде досягнута необхідна точність результату.

Оскільки точний розв'язок в принципі є невідомим, то користуються наступною умовою припущення уточнень .

Наприклад. Формула Ньютона-Рафоса для обчислення кореня квадратного для невід’ємного числа.

;



Поделиться:


Последнее изменение этой страницы: 2016-09-19; просмотров: 320; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.162.8 (0.009 с.)