Курсов проект  - INF296

на Николай Киров Киров, FN000000

версия 0.1 от 06.06.2003 г.

    1. Програма за решаване на задачата - F.CPP. Реализирани са два метода - търсене с връщане и динамично оптимиране.
    2. Текст на задачата; използват се стандартните вход и изход.
    3. Използван е компилатор Dev-C++ 4.0.
    4. Използват се стандартните вход и изход.
    5. Сложност на алгоритмите за матрица n x n:
- търсене с връщане  (backtracking) - експоненциална, за матрица само от единици броят на пътищата е приблизително O(3.7n); реализирано с функция backtrack();
- динамично оптимиране (greedy) - O(n2 ); реализирано с функция dinam() по формулата:
                            F(i,j) = F(i-1,j) + F(i, j-1).
В таблицата са дадени размерността n, n2 и броя на пътищата за лабиринт без дупки.
 

n n2 брой пътища n n2 брой пътища n n2 брой пътища
1 1 1 6 36 252 11 121 184756
2 4 1 7 49 924 12 144 705432
3 9 6 8 64 3432 13 169 2704156
4 16 20 9 81 12870 14 196 10400600
5 25 70 10 100 48620 15 225 40116600
Вид на входния файл F.inp:
1
n n
1 1 1 1 ... 1
1 1 1 1 ... 1
....
1 1 1 1 ... 1

На графиката са дадени (отляво надясно):
- функцията  3.7x
- брой пътища от таблицата
- функцията x
 

Извод: само динамичнито оптимиране дава разумно време за работа на програмата.
 
 
 
 

 

    6. Големина на входа (Dev C++):
-- максимални размери за данните за различни типове данни:

Types bytes max number* digits max n max пътища
unsigned int  =   unsigned long 4  4294967295 10 18 2333606220
unsigned long long 8 18446744073709551615 20 35 10006297401531025124
*проверено с програмата types.cpp
- минимални размери за данните - n = 1.
    7. Входен файл test1.inp с тестови примери;  изходен файл test1.out за примерите от входния файл.
    8. Гранични случаи - във файла за журито.
    9. Предложение за:
- входен файл test2.inp за жури за състезание по програмиране;
- изходен файл test2.out за примерите от входния файл;
- контролно време за работа на програмата за решаване на примерите - под 1 секунда за метода на динамичното оптимиране и над 6 минути за търсене с връщане.

 Литература.
 Емил Келеведжиев, Динамично опримиране, Мусала Софт и Анубис, София 2001.