ОБЧИСЛЮВАЛЬНА СКЛАДНІСТЬ АЛГОРИТМІВ І ПРОГРАМ НА ПРИКЛАДІ ЗАДАЧІ ПРО ЩАСЛИВІ КВИТКИ.

Презентация:



Advertisements
Похожие презентации
Тема 2. Розгалуження. Алгоритми розгалуження Задача. Ввести два цілих числа і вивести на екран більше з них. Ідея розвязання: потрібно вивести на екран.
Advertisements

Рекурсія Програми можуть містити виклик однієї або декількох підпрограм. Підпрограми можуть, в свою чергу, викликати інші підпрограми. А чи може підпрограма.
Бройченко А.Г АЛФАВІТ МОВИ (Turbo Pascal 7.0) АЛФАВІТ МОВИ (Turbo Pascal 7.0) Інформатика-11 Тема-3.
10-В клас Сьогодні на уроці. початок A1,b1 1.
1 ТАБЛИЧНІ ВЕЛИЧИНИ (УРОК 1) (Turbo Pascal 7.0) ТАБЛИЧНІ ВЕЛИЧИНИ (УРОК 1) (Turbo Pascal 7.0) Інформатика-11 Тема-6.
Програмування на мові Паскаль Тема Цикли. Цикли Цикл – це багатократне виконання однакової послідовності дій. цикл з відомою кількістю кроків цикл з невідомою.
Основи алгоритмізації і програмування. Тема 3. Мови програмування (4 год) Структура програми Елементи мови програму- вання.
Комбінаторика. Розвязування простих комбінаторних задач зводиться до визначення виду сполуки, про яку йдеться в задачі, і застосування відповідної формули.
Ковальчук О.М КОМАНДИ РОЗГАЛУЖЕННЯ (Turbo Pascal 7.0) КОМАНДИ РОЗГАЛУЖЕННЯ (Turbo Pascal 7.0) Інформатика-11 Тема-4 Ковальчук О.М., 2007.
Основи алгоритмізації і програмування. Тема 2. Моделі та моделювання (3 год) Етапи розв'язування задач на комп'ютері.
Одновимірні масиви 11 клас (продовження). Задача 4. У даному масиві з десяти дійсних чисел визначити найбільше значення. Спочатку вважатимемо, що значення.
Розділ 3. Алгоритмізація і програмування п Алгоритми й основні алгоритмічні структури. Складання обчислювальних алгоритмів.
Тема: «Абетка мови Пасаль. Структура програми.». Навчитися складати програми для розв`язування задач на обчислення. Мета.
Людмила Лоскутова © Київ Тема: «Абетка мови Пасаль. Структура програми.»
Табличні величини. Масиви. Знайти суму елементів одновимірного масиву. Program Suma; var A:array[1..5] of integer; S,i:integer; begin for i:=1 to 5 do.
Розгалуження в алгоритмах і програмах Алгоритми з розгалуженням.
Найбільший елемент Масиви. Задача 1 Знайти максимальний елемент масиву.
Цикли Розвязування задач НВК "Школа-гімназія "Сихівська"
1 Підпрограми- процедури (Turbo Pascal 7.0) Підпрограми- процедури (Turbo Pascal 7.0)
РОЗВЯЗУВАННЯ ЗАДАЧ ЗА ДОПОМОГОЮ ЛІНІЙНИХ РІВНЯНЬ. РІВНЯННЯ ЯК МАТЕМАТИЧНА МОДЕЛЬ ЗАДАЧІ.
Транксрипт:

ОБЧИСЛЮВАЛЬНА СКЛАДНІСТЬ АЛГОРИТМІВ І ПРОГРАМ НА ПРИКЛАДІ ЗАДАЧІ ПРО ЩАСЛИВІ КВИТКИ

Мета та завдання Мета – дослідити особливості розвязання проблеми розрахунку алгоритмічної складності, знайти оптимальний варіант розрахунку алгоритмічної складності для даної задачі. Завдання: Сформувати уявлення про алгоритми та їх складність; Зясувати відмінності теоретичного та експериментального визначення складності алгоритму; На прикладах (задача про щасливі квитки) розглянути процедуру визначення алгоритмічної складності та вибору алгоритму відповідно складності.

Основні поняття Алгоритм – це обчислювальний процес, що починається з обробки деякої сукупності можливих даних і спрямований на отримання визначених цими даними результатів. Алгоритмічна складність - це поняття теорії складності обчислень, оцінка ресурсів (частіше часу), необхідних для виконання алгоритму. Класи складності - це множина задач розпізнавання, для розвязку яких існують алгоритми, схожі за обчислювальною складністю. Види алгоритмічної складності: логічна, статична,тимчасова, ємнісна,асимптотична, експериментальна;

Задача про щасливі квитки Дані трамвайні білети номерами від до Знайти всі щасливі квитки та вивести на екран їх кількість. Математична модель: Щасливим вважається квиток, сума трьох перших цифр якого дорівнює сумі останніх. Тобто нам потрібно розкласти шестизначне число на цифри. Приблизно такий вигляд буде мати число G: G=100000*a *b *c + 100*d +10e +f.

Три варіанти розв'язку 1) const Max=9; var q,w,e,r,t,y:integer; levo,pravo:integer; begin for q:=0 to Max do for w:=0 to Max do for e:=0 to Max do for r:=0 to Max do for t:=0 to Max do for y:=0 to Max do begin levo:=q+w+e; pravo:=r+t+y; if(levo = pravo) then begin inc(s); end; write (s); end. 2) var n,n1,n2,i,j,count:Longint; s:string; begin count:=0; for j:=0 to do begin n:=j; n1:=0;n2:=0; for i:=1 to 6 do begin if i<=3 then n1:=n1+n mod 10 else n2:=n2+ n mod 10; n:=n div 10; end; if (n1=n2) then begin Str(j,s); for i:=1 to 6-length(s) do s:='0'+s; count:=count+1; end; writeln('Всего ', count); end. 1)uses crt; var m,n,s,i,q,sum:integer; k: array[1..14] of integer; function c(m,n:integer):longint; begin if m>n then c:=0; if (m=0) or (m=n) then c:=1 else if n-m<m then c:=c(n- m,m) else c:=c(m-1,n-1)+c(m,n-1); end; begin clrscr; k[1]:=1; for i:=2 to 10 do begin s:=c(2,i+1)+1; k[i]:=s; end; k[11]:=(c(2,12)+1)- (3*c(2,2)); q:=3; for i:=12 to 14 do begin s:=(c(2,i+1)+1)- (3*(c(2,q)+1)); k[i]:=s; q:=q+1; end; sum:=0; for i:=1 to 14 do begin sum:=sum+sqr(k[i]); end; writeln('Biletu: ', 2*sum); end.

Результати трьох рішень та порівняння швидкодії програми за часом

Висновок: Існує безліч кількість способів розрахувати алгоритмічну складність. Їх треба вибирати відповідно складеної програми. Також на прикладі цієї задачі було зрозуміло, що правильних рішень може бути безліч. Важливо настільки граматично правильно скласти алгоритм, щоб сама програма була швидко - дієвою та приносила вірний результат. Наша задача була простим прикладом, тому для неї використовувалась експериментальна складність, але для більш складних задач використовуються інші великі формули. Алгоритмічна складність допомагає економити час та пам'ять компютера – це є найважливішим для програміста та його замовника, бо завжди потрібні чіткі швидкі результати, які не будуть займати багато простору памяті.