Математика и Информатика

2014/2, стр. 107 - 128

ДВУМЕРНИ МАСИВИ: АЛГОРИТМИ ЗА ТЪРСЕНЕ И ЕКСПЕРИМЕНТИ

Павел Азълов
E-mail: pk10@psu.edu
Pennsylvania State University
Hazleton campus
U.S.A.

Резюме: В статията се разглеждат алгоритми за търсене в числени 2D частично наредени масиви, т.е. масиви, чиито елементи са ненамаляващи по редове и колонки. Накратко са разгледани четири известни алгоритъма, единият от които е алгоритъмът за търсене Saddleback. Описан е и един нов алгоритъм, наречен алгоритъм за търсене чрез концентрични подмасиви. Основната идея на алгоритъма е конструирането на редица от подмасиви с намаляващи размери на редовете и колонките, като всеки следващ подмасив на редицата се съдържа в предшестващия го подмасив. По този начин, ако търсеното число се съдържа в първоначалния масив, то числото се съдържа и във всеки подмасив на редицата, последният от които съдържа само един елемент със стойност, равна на търсеното число. Всичките пет алгоритъма са реализирани в средата за програмиране Microsoft Visual C++. Извършени са експерименти, в които са измерени времената за изпълнението им за разнообразни стойности на броя на редовете и колонките в масивите. Част от резултатите от проведените експерименти са дадени в няколко таблици и са илюстрирани със съответни графики. Най-добри времена от функциите, реализиращи съответните алгоритми, са получени от алгоритъма за търсене с концентрични подмасиви.

Ключови думи: search in 2D arrays, 2D partially ordered arrays, Saddleback algorithm, empirical analysis

1. Въведение

1.1. Основна задача

В тази статия се разглеждат алгоритми за търсене в числени двумерни масиви, (2D масиви), с M реда и N колонки, M и N са цели положителни числа. Предполага се, че елементите на масивите са ненамаляващи числени редици по редове и колонки, т.е. ако а е такъв масив, тогава са в сила следните две свойства:

Наредба по редове: a[i][j] ≤ a[i][j+1], за всяко i = 1, 2, …, M и 1 ≤ j < N.

Наредба по колонки: a[i][j] ≤ a[i+1][j], за всяко j = 1, 2, …, N и 1 ≤ i < M.

Определение. 2D масив, за елементите на който са в сила горните две свойства, ще наричаме частично нареден масив. Частните случаи на 2D масиви с размерност 1xN и Mx1, т.е. едномерните наредени масиви, също ще наричаме частично наредени масиви. За частично нареден масив приемаме и масива с размери 1x1, т.е. масив от един елемент.

Основна задача [Търсене в частично нареден масив] Нека a да е 2D частично нареден масив, а x число от базовия тип данни на масива. Да се построи алгоритъм, с който се търси елемент от масива със стойност x, т.е. алгоритъм, с който се търсят индекси p и q на масива, 1 ≤ p M , 1 ≤ q N, такива че a[p][q] = x или да се констатира, че в масива не съществува елемент със стойност x.

В някакъв смисъл формулираната задача е обобщение на задачата за търсене в нареден едномерен масив, в който случай задачата е перфектно решена с метода „Разделяй и владей“, а съответният алгоритъм е познат като „Двоично търсене“.

1.2. Свойства на 2D частично наредените масиви

Частично наредените 2D масиви притежават редица свойства. По-долу са по-сочени само тези от тях, които са в основата на алгоритмите за търсене, разгледани в тази статия.

Нека а е произволен 2D частично нареден масив, а x е произволно число от базовия тип на масива. В сила са следните свойства:

P1. Ако x е елемент от масива, то a[1][1] ≤ x a[M][N]. Ще акцентираме две очевидни, но важни следствия, които многократно се използват по-нататък:

a[1][1] е най-малкото число в масива, а a[M][N] – най-голямото;

Ако x < a[1][1] или x > a[M][N], тогава x не е елемент на a.

P2. Ако a[M-1][N-1] < x < a[M][N], тогава x може да бъде елемент на масива само ако е в последия ред и/или колонка.

P3. Всяка правоъгълна област от 2D частично нареден масив е също 2D частично нареден масив, който по-нататък ще бъде наричан подмасив.

P4. Елементите на всеки диагонален ред, успореден на „главния диагонал“, са в ненамаляваща последователност. Понятието главен диагонал, когато масивът не е квадратен (M N), е интуитивно ясно.

Доказателствата следват непосредствено. Ще докажем само свойствo P1.

Доказателство. Ако x е елемент от масива, тогава съществува поне една двойка индекси p и q, 1 ≤ p M, 1 ≤ q N, такива, че x = a[p][q]. Можем да запишем следната редица от неравенства:

a[1][1] ≤ a[p][1] ≤ a[p][q] ≤ a[p][N] ≤ a[M][N]

1.3. Литературна справка

Формулираната по-горе задача е математическа, която в по-общ вид е изследвана още през 70-те години (Agarwal&Sharir, 1988; Linial&Saks, 1985), но публикации се срещат и сега (Bird, 2006; Bird, 2010)1. С приложенията си в различни области, като например в компютърната графика и изчислителната геометрия, тази задача става още по-атрактивна. Разработени са разнообразни алгоритми за решението й, а програмни реализации и коментари към тях, срещани в Internet, се публикуват и днес.2,3

Особен интерес се проявява към алгоритъма, наречен Saddleback, известен отпреди 40 години. Ръкописен материал за него се съдържа в архива на E. Dijkstra.1,4 В него той пише “The origin of the algorithm is unnkown; its name has been invented by David Gries”. В свои публикации, книги и лекционни материали5 D. Gries разглежда този алгоритъм и днес алгоритъмът е един от класическите примери, които се представят в университетски курсове по алгоритми и формални методи за доказване на коректността на програми. Вече не е лесно да се посочат разнообразните идеи на модификации на алгоритъма Saddleback. Той е намерил място и в колекцията от „перли по проектиране на функционални алгоритми“ на Richard Bird (2006; 2009).

Някои основни и добре познати идеи за алгоритми за търсене в 2D частично наредени масиви са разгледани накратко в т. 2. Представен е и един нов алгоритъм, описан в т. 3. В т. 4 е описана процедура за генериране на 2D частично наредени масиви, които се използват в т. 5 за експериментите с разгледаните алгоритми.

2. Известни алгоритми за решаване на основната задача

При словесното описание на алгоритмите индексите на масивите започват от 1, а не от 0, както това е при езиците C/C++. Означенията на променливите и параметрите са унифицирани по следния начин:

а – име на частично нареден 2D масив с размерност MxN, M – брой редове и N – брой колонки;

x е число, което се търси в 2D масива;

[a..b] – интервал от индекси в масива а, посочващи поредни номера на редове или колонки , a b. Например с [r1..r2] е означен интервалът от редове на масива от r1 до r2 включително.

r, r1, r2, p, p1, p2 – индекси от интервала [1..M], посочващи пореден номер на ред от а;

c, c1, c2, q, q1, q2 – индекси от интервала [1..N], посочващи пореден номер на колонка от а.

Реализизацията на всички алгоритми е извършена в среда на програмиране Microsoft Visuаl С++ 2010.

2.1. Алгоритъм „Saddleback“

Търсенето на елемент от масива със стойност x в алгоритъма Saddleback започва с елемента a[r][c], който се намира в последния ред (r = М), първа колонка (c = 1). Ако a[r][c] = x, елементът е намерен и търсенето завършва. Ако a[r][c] < x, търсеният елемент не може да бъде в тази колонка и търсенето продължава в следващата колонка (c + 1). В противен случай, т.е. ако a[r][c] > x, търсеният елемент не може да бъде в този ред и се тества елементът от същата колонка, но от предходния ред (r – 1). Кодът на функцията, реализираща този алгоритъм, е даден по-долу:

bool alg1(int a[][N], int x)
{
int r = M-1;
int c = 0;
while (r >= 0 && c < N)
if (a[r][c] == x) return true;
else if (a[r][c] < x) c = c + 1;
else r = r - 1;
return false;
}

Лесно се съобразява, че реализацията на алгоритъма Saddleback може да се опише и като се започне от най-горния десен елемент на масива (индекси [1][N]), а придвижването ще се извършва надолу (нарастване на номера на реда) и наляво (намаляване на номера на колонката).

2.2. Последователно-двоично търсене по редове (стълбове)

Понеже редовете (колонките) на частично наредените масиви са наредени едномерни масиви, то за всеки от тях може да се приложи алгоритъмът за двоично търсене. Това означава обединение на последователното търсене с двоичното търсене в една процедура, която накратко е наречена последователно-двоично търсене. Следва описанието на алгоритъма като функция (alg2), в която съществено се изполва функцията bSearchR за двоично търсене в произволен ред r от масива а, r = 1, 2, …, M.

bool alg2(int a[][N], int x)
{
for (int r = 0; r < M; r++)
if (bSearchR(a, r, 0, N-1, x)) return true;
return false;
}

Функцията bSearchR ще се изпълни не повече от M пъти, което означава, че времето за изпълнение на тази функция е constxMxlg(N). Същата идея може да се приложи и по колонки. Една предварителна проверка за стойностите на M и N ще реши кой от двата варианта да бъде използван в конкретния случай – търсене по редове или търсене по колонки.

2.3. Двумерен вариант на двоичното търсене

В този алгоритъм „средният“ елемент ще бъде някъде в „средата“ на масива с индекси [M/2][N/2]. Чрез средния елемент масивът се „разбива“ на четири подмасива, всеки от които е частично нареден масив (свойство P3). Един пример е даден на фиг. 1, в който M = 9, N = 10, M/2 = 4, N/2 = 5. Средният елемент в масива е а[4][5] = 19, а четирите области A, B, C и D са определени с номерата на двойките индекси по редове и колонки, както следва: подмасив A: ([1..4], [1..5]), подмасив B: ([1..4], [6..10]), подмасив C: ([5..9], [1..4]) и подмасив D: ([5..9], [6..10]).

Интересни за разглеждане са следните случаи:

a) Ако a[M/2][N/2] = x, елементът е намерен и търсенето завършва с успех. b) Ако x < a[M/2][N/2], търсеният елементът не може да бъде в подмасив D. (свойство P1) и търсенето трябва да продължи в подмасивите A, B и C.

c) Ако a[M/2][N/2] < x, търсеният елементът не може да бъде в подмасив A (свойство P1) и търсенето следва да продължи в подмасивите B, C и D.

d) Този процес на „разбиване“ на подмасиви продължава до намирането на търсения елемент или до достигане на подмасив, в който единият или и двата му размера са равни на нула.

Специално ще отбележим, че подмасивите B и C присъстват и в двата случая b) и c), което трябва се има предвид при реализацията на алгоритъма (alg3Rec). Параметрите r1, r2, c c2 се използват като индекси, с които на всяка стъпка се определят подмасивите A, B, C и D на текущия масив.

123456789101256810141416194223679111821223444378911142223253648411121314192431333850512141515202736374045612151618232737474855714212325273040494956818243631333740505158930323840444647525460

Фигура 1. Масив, „разбит“ на четири подмасива от средния елемент a[4][5] = 19

bool alg3(int a[][N], int x)

{
return alg3Rec(a, 0, M-1, 0, N-1, x);
}
// Функция, реализираща алгоритъма
„Двумерен вариант на двоично търсене“
// Обръщение към тази функция извършва функцията alg3
bool alg3Rec(int a[][N], int r1, int r2, int c1, int c2, int x)
{
// Случаи, при които търсенето завършва с неуспех
if (r1 > r2 || c1 > c2) return false;
if (r1 == r2 && c1 == c2 && a[r1][c1] != x) return false;
if ((x < a[r1][c1]) || (x > a[r2][c2])) return false; // Свойство P1
// Декомпозиция на общия случай на четири подобни подслучая
int r = (r1 + r2)/2; // Индекси на
int c = (c1 + c2)/2; // средния елемент
if (a[r][c] == x) return true;
else if (r1 == r2 && c1 == c2) return false;
if (alg3Rec(a, r1, r, c+1, c2, x))
return true; // Подмасив B
if (alg3Rec(a, r+1, r2, c1, c, x))
return true; // Подмасив C
if (x < a[r][c])
return alg3Rec(a, r1, r, c1, c, x); // Подмасив A
else
return alg3Rec(a, r+1, r2, c+1, c2, x); // Подмасив D
}

Началните стойности на параметрите r1, r2, c1 и c2, с които функцията alg3Rec се изпълнява, са съответно [r1..r2] = [0..М-1] и [c1..c2] = [0..N-1]. Те определят границите на първоначалния масив.

2.4. Алгоритъм за търсене в средния ред на масива

Вместо да се избира елемент в средата на масива, търсенето в този алгоритъм започва с двоично търсене в средния ред на масива. След това се определя подходящата средна колонка. Ето основните стъпки в алгоритъма:

1. Извършва се търсене в средния ред r = [M/2] на масива. Ако търсеният елемент е намерен, търсенето завършва с успех.

2. Ако търсеният елемент не е в ред r, тогава:

Ако a[r][1] > x търсенето продължава в подмасив A1, определен от редове [r1, r-1].

Ако a[r][N] < x търсенето продължава в подмасив A2, определен от редове [r+1, r2].

3. Ако търсеният елемент не е в ред r, но в него има позиция q, такава че:

a[r][q] < x < a[r][N]. В този случай търсенето продължава в два подмасива B и C.

Масивът B е определен с редове [r1, r-1] и колонки [q+1, c2].

Масивът C e с редове [r1+1, r2] и колонки [c1, q].

4. За всеки от подмасивите A1, A2, B и C търсенето продължава от т. 1.

По-долу следва кодът на рекурсивната функция с име alg4Rec, реализираща алгоритъма. Параметрите r1, r2, c c2 се използват като индекси, с които на всяка стъпка се определят подмасивите A и B на текущия масив.

bool alg4(int a[][N], int x)
{
return alg4Rec(a, 0, M-1, 0, N-1, x);
}
// Функция, реализирана по метода „Търсене в средния ред на масива“
bool alg4Rec(int a[][N], int r1, int r2, int c1, int c2, int x)
{
// Случаи, при които търсенето завършва с неуспех
if (r1 > r2 || c1 > c2) return false;
if (r1 == r2 && c1 == c2 && a[r1][c1] != x) return false;
if ((x < a[r1][c1]) || (x > a[r2][c2])) return false;// Свойство P1
// Декомпозиция на общия случай на два подобни подслучая
int q;
int r = (r1 + r2)/2; // Индекс на средния ред
if (bSearchR(a, r, c1, c2, x, q)) return true;
return alg4Rec(a, r + 1, r2, c1, q, x) || // Област C
alg4Rec(a, r1, r, q + 1, c2, x); // Област B
}

Началните стойности на параметрите r1, r2, c c2, с които функцията alg4Rec се изпълнява, са съответно [r1..r2] = [0..М-1] и [c1..c2] = [0..N-1].

3. Алгоритъм за търсене чрез редица от концентрични подмасиви

Водеща идея в този алгоритъм е конструирането на редица от подмасиви с намаляваща размерност, която има следните две свойства:

[C1] Всеки подмасив от редицата, с изключение на първоначалния, изцяло се съдържа в предхождащия го. Тази е и причината редицата от подмасиви да бъде наречена редица от концентрични масиви.

[C2] Ако първоначалният масив съдържа елемент с търсената стойност x, то този елемент се съдържа във всеки подмасив от редицата.

Тъй като размерността на всеки следващ подмасив в редицата е намаляваща, то поне една от размерностите на всеки следващ подмасив от редицата ще е по-малка от съответната размерност на предхождащия го подмасив. Като следствие от това и от свойствата C1 и C2, редицата от подмасиви ще клони към подмасив, съдържащ само един елемент. Стойността на този елемент ще определи крайния резултат от търсенето. Ако стойността му е равна на x, търсенето завършва с успех. В противен случай първоначалният масив не съдържа елемент с търсената стойност.

3.1. Построяване на редицата от концентрични подмасиви

В алгоритъма, представен по-долу, процедурата за двоично търсене се прилага четирикратно за определянето на всеки следващ подмасив от редицата.

1. Началният масив (подмасив) съдържа редовете [r1..r2] = [1..M] и колонките [c1..c2] = [1..N].

2. В интервала от редовете [r1..r2] и колонката c1 се търси ред с номер p1 такъв, че елементът a[p1][c1] да е равен на x или a[p1][c1] да е най-голямото число в колонката c1, което да не е по-голямо от x (фиг. 2).

3. В реда p1 между колонките [c1..c2] се търси колонка q1 такава, че a[p1]

[q1] да е равен на x или a[p1][q1] да е най-голямото число в колонката q1, което не е по-голямо от x. По този начин се определят номерата на реда r2 = p1 и на колонката c1 = q1 на новия подмасив.

4. В интервала от колонките [c1..c2] и в реда r1 се търси колонка с номер q2 такава, че елементът a[r1][q2] да е равен на x или a[r1][q2] да е най-голямото число в реда r1, което не е по-голямо от x.

5. В колонката q2 между редовете [r1..p] се търси ред p2 такъв, че a[p2][q2] да е равен на x или a[p2][q2] да е най-голямото число в колонката q2, което не е по-голямо от x. По този начин се определя номерът на горния ред r1 = p2 и номерът на дясната колонка c2 = q2 на новия подмасив.

От стъпки 2 и 3 на алгоритъма се определя долният ляв елемент на новия подмасив: ред r2 = p1 - 1 и колонка c1 = q1 + 1. От стъпки 4 и 5 се определя горният десен елемент на новия подмасив: ред r1 = p2 + 1 и колонка c2 = q2 - 1.

С описаната процедура от текущия подмасив се отстраняват областите, несъдържащи търсения елемент. Търсенето ще продължи в нов подмасив, в който е възможно да се съдържа търсеният елемент. Фиг. 2 илюстрира опеделянето на новия подмасив. Маркираната област от масива е новият подмасив от редицата.

Ясно е, че конструираният нов масив е подмасив на дадения. Ще докажем, че ако x е елемент на първоначалния масив, то той се съдържа и в подмасива.

Доказателство. Начинът, по който са пресметнати p1, q1 и p2, q2, елеминира търсенето в подмасивите ([r1..r2] [c1..q1]) и ([r1..p2][c1..c2]).

В сила са и следните неравенства:

a[p1][c1] < x < a[p1+1][c1] ≤ a[i][j] за i = p1+1, p1+2, . . ., M; j = 1, 2, . . ., N.

Първите две неравенства следват от избора на p1, а последното – от свойство P1. Аналогично могат да се запишат и неравенствата:

a[r1][q2] < x < a[r1][q2+1] ≤ a[i][j] за i = 1, 2, . . ., M; j = q2+1, q2+2, . . ., N.

С тези две системи от неравенства се елиминират подмасивите, определени с интервалите от индекси ([p1+1..r2][c1..c2]) и ([r1..r2][q2+1..c2]). Всичко това показва, че ако търсеният елемент x е в първоначалния масив, той остава и във всеки следващ подмасив на редицата.

c1q1q2c2r1p1p1r2

Фигура 2. Илюстрация на алгоритъма, използващ редица от подмасиви

Следва кодът на функцията alg5, реализираща описания алгоритъм. Както се вижда, централна роля в нея играят функциите за двоично търсене по редове bSearchR и по колонки bSearchC. Всяка от тези функции се прилага по два пъти за определянето на координатите на всеки следващ подмасив от редицата. 3.2. Програмен код на алгоритъма bool alg5(int a[][N], int x)

{
// Начален масив
int r1 = 0, r2 = M-1; // Редове [0 .. M-1]
int c1 = 0, c2 = N-1; // Колонки [0 .. N-1]
int p, q;
while ((r1 <= r2) && (c1 <= c2))
{
// Двоично търсене в колонка c1 между редове [r1, r2]
if (bSearchC(a, c1, r1, r2, x, p)) return true;
else
{ // Двоично търсене в ред p между колонки [c1, c2]
if (bSearchR(a, p, c1, c2, x, q)) return true;
r2 = p - 1; // Нов ред
c1 = q + 1; // Нова колонка
}
// Двоично търсене в ред r1 между колонки [c1, c2]
if (bSearchR(a, r1, c1, c2, x, q)) return true;
else
{ // Двоично търсене в колонка q между редове [r1, p]
if (bSearchC(a, q, r1, p, x, p)) return true;
c2 = q - 1; // Нова колонка
r1 = p + 1; // Нов ред
}
// Проверка дали елементът е намерен
if ((r1 == r2) && (c1 == c2) && (a[r1][c1] == x))
return true;
}
return false;
}

4. Обратна на основната задача

За извършването на експерименти с представените алгоритми е необходимо да се генерират 2D частично наредени масиви със случайни числа. Това налага решаването на още една задача.

4.1. Дефиниция и алгоритъм на задачата

Задача. Дадени са целите положителни числа M, N, p, q, x, y и z, за които са изпълнени следните условия: 1 ≤ p M, 1 ≤ q N и y x z. Да се генерира 2D масив a с размерност MxN, имащ свойствата:

Масивът а е частично нареден, a eлементите му са случайни цели числа в интервала [y .. z].

a[1][1] = y, a[M][N] = z и a[p][q] = x.

Всеки 2D масив може да се разглежда като едномерен, в който редовете (колонките) на двумерния масив се поставят една след друга, т.е. след елементите на първия ред следват елементите на втория и т.н. Пресмятането на позицията (индекса) k на елемент от едномерния масив, съответен на елемент от двумерния масив с индекси [p][q], може да се извърши с линейна функция, която ще зависи от p, q и N. Тук трябва да се има предвид, че индексът на първия елемент в езиците C/C++ е нула. Тогава общият вид на функцията address, с която се пресмята адресът на елемента a[p][q] в едномерното представяне на двумерния масив, ще бъде:

k = address(p, q, N) = Np + q

Като се използват направените по-горе уточнения, решението на задачата може да се формулира така:

1. Дефинира се едномерен масив b с MxN елемента;

2. Генерират се MxN случайни числа в интервала [y..z] като елементи на масива масива b.

3. Масивът b се сортира в нарастващ ред на елементите му.

4. Масивът b се разглежда като едномерно представяне на двумерния масив a по редове.

Определеният по този начин масив a с помощта на едномерния масив b е частично нареден, защото масивът b е сортиран. Това означава, че: b[k1] ≤ b[k2] за k1≤ k2, т.е. 2D масивът a е нареден по редове и по колонки.

Остава нерешен още един въпрос – елементът a[p][q] трябва да e със стойност x. Това лесно се постига, като интервалът от индекси [0 .. MN-1] се раздели на две части [0.. Np + q -1] и [Np + q, MN -1]. За елементите от масива b с индекси от първия интервал ще се генерират случайни числа в интервала [y .. x], а за елементите от втория интервал ще се генерират случайни числа в интервала [x .. z].

4.2. Програмен код за генериране на 2D частично наредени масиви

Генерирането на случайни числа – елементи на частично нареден 2D масив, се извършва с трите функции, чиито дефиниции следват по-долу.

void syn2Darray(int a[][N])
{
int size = M*N;
for (int k = 0; k < size; k++) // Генериране на MxN
a[k/N][k%N] = rNumb(); // случайни числа
// „Бързо“ сортиране на масива с алгоритъм от STL библиотеката
qsort(a, size, sizeof(int), compare);
}
// Функция, генерираща случайно число в интервала
[MINVAL .. MAXVAL]
int rNumb()
{
const double DBLMXRD = double(RAND_MAX) + 1;
double r = double(rand())/DBLMXRD;
return int(r * (MAXVAL - MINVAL + 1)) + MINVAL;
}
// Дефиниция на функцията „compare“ за сравняване на две
// числа. Използва се от полиморфната функция qsort от
// библиотеката с алгоритми STL
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}

5. Експерименти. Измерване на времето със синтетично генерирани частично наредени 2D масиви

С разработените алгоритми са направени разнообразни експерименти за пресмятане на времето им за изпълнение. Част от тези данни са представени по-долу в таблици и графики. Дадена е и частта от управляващия модул на програмата, с която са извършени експериментите. Основни параметри на експериментите са различните стойности на размерностите M и N на масивите. Те включват и трите случая: M < N, M > N и M = N. За всички тези случаи са извършени два основни вида експерименти, когато търсеното число е елемент на масива и когато търсеното число не е елемент на масива. Времената за изпълнение на всички алгоритми са получени от изпълнението им с едни и същи 2D частично наредени масиви и едни и същи числа x за търсене в тях. Максималният размер на масивите, с които са извършени изпълненията, е 250,000 елемента. За всяка двойка (M, N) са генерирани по 10 масива. За стойност на числото x, което се търси, е използван всеки един от елементите на масива. Това означава, че всеки от алгоритмите е изпълнен общо 10xMxN пъти при търсенето, което е завршвало с успех за всяка двойка (M, N). Същият брой експерименти е извършен и в случаите, при които числото не е елемент на масива.

Графичната илюстрация на времената за изпълнение на алгоритмите за определени стойности на M и N е получена в средата на програмиране MATLAB.6 5.1. Текст на управляващия модул на програмата

Петте алгоритъма са реализирани като функции с еднакви сигнатури. Това позволява да се разглеждат като масив от функции {alg1, alg2, alg3, alg4, alg5}. С това се постига унифицирано обръщение към всички функции с единствен оператор. Той се намира в тялото на най-вътрешния цикъл на управляващия модул.

const int NRALG = 5; // Брой на алгоритмите
const int NRARR = 10; // Брой на генерираните масиви
const int MINVAL = 1; // Минимално число в масива
const int MAXVAL = 10000000; // Максимално число в масива
const int M = ...; // Брой на редовете на масива
const int N = ...; // Брой на колонките на масива
// Масив с имената на алгоритмите
const string algName[NRALG] = {
“Algorithm 1”, // Алгоритъм Saddleback
“Algorithm 2”, // Последователно-двоично търсене по редовете
“Algorithm 3”, // Двумерен вариант на двоичното търсене
“Algorithm 4”, // Търсене в средния ред на масива
“Algorithm 5” // Алгоритъм с концетрични подмасиви
};
// Прототипи на функциите, реализиращи петте алгоритъма
bool alg1(int a[][N], int x);
bool alg2(int a[][N], int x);
bool alg3(int a[][N], int x);
bool alg4(int a[][N], int x);
bool alg5(int a[][N], int x);
// Прототип на функция (масив от функции), която извършва
// обръщение към функциите, които се изследват. Масивът f
// съдържа имената на функциите, декларирани по-горе
bool (*f[NRALG])(int [][N], int x) = {alg1, alg2, alg3, alg4,
alg5};
// Рекурсивна функция, реализираща Алгоритъм 3.
// Обръщение към нея извършва в alg3.
bool alg3Rec(int a[][N], int r1, int r2, int c1, int c2, int x);
// Рекурсивна функция, реализираща Алгоритъм 4.
// Обръщение към нея извършва в alg4.
bool alg4Rec(int a[][N], int r1, int r2, int c1, int c2, int x);
// Следват прототипи на помощни функции
// . . .
int main()
{
double totalTime[NRALG] = {0.0}; // Масив за натрупване
// на времената
// за изпълнение на отделните алгоритми
int a[M][N]; // 2D частично нареден масив
bool algResult;
clock_t start, end; // Променливи, необходими за измерване на
// времето за изпълнение на алгоритмите
srand(unsigned(time(0))); // Стартиране на генератора
// на случайни числа
// Печат на основните параметри на експеримента
cout << “Number of algorithms = “ << NRALG << endl;
cout << “Number of arrays = “ << NRARR << endl;
cout << “Minimum number = “ << MINVAL << endl;
cout << “Maximum number = “ << MAXVAL << endl;
cout << “Number of rows = “ << M << endl;
cout << “Number of columns = “ << N << endl;
for (int nrArr = 0; nrArr < NRARR; nrArr++)// Всеки от
// алгоритмите се
{ // изпълнява с
// NRARR масива
syn2Darray(a); // Генериране на синтетичен
// 2D частично нареден масив
for (int alg = 0; alg < NRALG; alg++) // Цикъл за изпълнение
// на всеки
{ // алгоритъм
start = clock(); // Стартиране на
// часовника за alg
for (int i = 0; i < M; i++) // Алгоритъмът alg
// се изпълнява MxN
for (int j = 0; j < N; j++) // пъти с всеки
// елемент на масива
algResult = (*f[alg])(a, a[i][j]);// Обръщение към
// алгоритъм alg[1..5]
end = clock(); // Спиране на часовника за alg
// Сумарно време за изпълнение на алгоритъма alg [1..5]
totalTime[alg] += (double)(end-start)/CLOCKS_PER_SEC;
}
}
cout << xed << setprecision(3);
for (int alg = 0; alg < NRALG; alg++)
cout << algName[alg] << “, time = “ << setw(8)// Печат на
// времето
<< totalTime[alg] << “ seconds” << endl; // за всеки
// алгоритъм
return 0;
}

5.2. Резултати от проведените експерименти

Част от извършените експерименти са обобщени в няколко таблици и графики. В експеримент 1 стойността на M е фиксирана на 250 реда, а броят на колонките се изменя от 100 до 1000 със стъпка 100 (Табл. 1). При експеримент 2 броят на колонките N е фиксиран и е равен на 250, а броят на редовете се променя от 100 до 1000 със стъпка 100 (Табл. 2). Може да се забележи, че и в двата експеримента алгоритмите 1, 4 и 5 имат сходни времена за едни и същи стойности на MxN. Вижда се също, че алгоритмите 2 и 3 дават големи отклонения при експеримент 2 (M > N) спрямо тези от експеримент 1, което е очаквано.

На фиг. 3 графично са илюстрирани времената от експериментите 1 и 2, но само на три от алгоритмите (1, 4 и 5). Времената за изпълнение на всички алгоритми в двата случая се различават, особено тези на Алгоритми 2 и 3 (Табл.1, 2), но съотношенията на времената между всичките алгоритми и в двата случая се запазват.

Експеримент 1 Таблица 1. M = 250; N = 100, 200, . . ., 1000

Алг. 1Алг. 2Алг. 3Алг. 4Алг. 50.1361.9941.8630.2150.0350.3294.3204.0100.4370.1100.5787.0356.1450.6570.1550.8599.5468.1430.9210.1721.28011.80710.2021.1260.2491.83915.21212.2311.3880.2962.19917.59714.1811.6060.3112.82520.21716.2081.9020.3593.46122.68218.3172.0740.4544.13425.11720.2642.3090.481

Експеримент 2 Таблица 2. M = 100, 200, . . . , 1000 и N = 250

Алг. 1Алг. 2Алг. 3Алг. 4Алг. 50.1400.8910.9490.2210.0320.3123.5103.5420.4060.1250.5608.0357.8910.7030.1410.90513.82213.4960.9650.1571.40321.67019.2811.2160.2971.90231.28027.0321.5440.3142.46542.04234.8661.7940.3593.19855.20942.8532.0750.4063.91570.48250.9342.4020.4524.83786.34558.0642.7470.465

Фигура 3. Графики на резултатите от изпълненията на три от алгоритмите (1, 4 и 5)

Експеримент 3 Таблица 3. M = N

M = NАлг 1Алг 2Алг 3Алг 4Алг 51000.0160.3120.3580.0780.0161500.1391.1401.2940.1880.0152000.2492.7802.8680.3280.0942500.4215.4145.0220.5310.1093000.73410.0309.3140.8260.1713501.20416.05014.9301.1860.2324001.84324.50421.6871.6220.3124502.52734.08629.7032.0290.3735003.52746.45738.3132.4950.469

При експеримент 3 са измерени времената на петте алгоритъма при M = N с начална стойност 100, крайна стойност 500 и стъпка 50 в случая, когато търсеният елемент е елемент на масива (Табл. 3). Същият експеримент е извършен и в случая, когато търсеното число не е елемент на масива. Графично резултатите от двата експеримента са представени на фиг. 4. Поради голямата разлика във времената на Алгоритми 2 и 3 по отношение на останалите е използвана логаритмична скала по оста Oy. В лявата графика е представен случаят, когато търсеното число е елемент на масива, а дясната показва случая, когато числото не е елемент на масива. Въпреки че се забелязва известно нарастване на времената във втория случай, съотношението на времената между отделните алгоритми се запазава.

Експеримент 4 Таблица 4. Времена на алгоритмите с няколко екстремални стойности на (M,N)

MNАлг. 1Алг. 2Алг. 3Алг. 4Алг. 51250000781.5030.4242.2760.4690.500550000155.0170.9842.1370.9520.482102500077.3601.7472.3081.2480.470201250038.7503.1202.9161.4530.4662500001809.4849598.5422.8132.9740.464500005172.6942384.9152.7293.1060.421250001091.0241381.9443.7763.2280.436125002053.821774.3079.2183.1670.453

Фигура 4. Графики на резултатите от изпъленията на петте алгоритъма при M = N

Интересно е да се разгледат и резултатите от Табл. 4, в която има няколко екстремални случая, като например М = 1, N = 250000. В този случай двумерният масив се изражда в едномерен, състоящ се само от един ред. Аналогичен е и другият случай, при който масивът се изражда само в една колонка, M = 250000 и N = 1.

Във всички разгледани случаи Алгоритъм 5 се е изпълнил за най-кратко време. Изпълненията му не са повлияни от това, дали M < N, M > N или M =N. Това му поведение се запазва и в случаите, когато двумерният масив е с големи различия в стойностите на M и N, включително и при израждането на двумерния масив до едномерен. От Табл. 4 се вижда, че времената на Алгоритъм 1 са твърде високи при големи разлики в стойностите на M и N. Интересни, но не изненадващи, са резулатите на Алгоритъм 2. При M = 1 и N = 250000 времето му за изпълнение е най-добро от всички алгоритми за всички случаи на MxN = 250000. Направените по-горе коментари към времевите характеристики на разгледаните алгоритми не са математически обосновани. Те са основават на данните, по-лучени експериментално, но резултатите от експериментите са достатъчно ясни, за да подсказват идеи за формулиране на хипотези, валидността на които следва да бъде доказана.

6. Проект в развитие

Като близки до основната задача, разгледана в статията, могат да се формулират редица други задачи за частично наредени масиви. Списък от шест такива задачи е даден по-долу. За всяка от тях се иска проектиране и разработка на съответен алгоритъм. Времевата характеристика на алгоритмите не е без значение. Реализирането на алгоритмите на определен език за програмиране и извършването на съответни експерименти ще внесе допълнителна яснота относно практическата им стойност.

Задача 1. Свойство P2 дава идея за алгоритм, който започва с разглеждането на най-големия елемент на масива, a[M][N]. Ето основните случаи, които трябва да се разглеждат в този алгоритъм:

a) Ако a[M][N] = x, елементът е намерен и търсенето завършва с успех.

b) Ако x > a[M][N], масивът не съдържа елемент със стойност x и търсенето завършва с неуспех (съгласно P1).

c) Ако a[M-1][N-1] = x, елементът е намерен и търсенето завършва с успех. d) Ако a[M-1][N-1] < x, търсенето има смисъл да продължи само в M-тия ред и N-та колонка (съглано P2).

e) Ако x < a[M-1][N-1], търсенето продължава в подмасива на първоначалния масив, в който са отстранени последният ред и последната колонка. Новият подмасив е 2D частично нареден (съгласно P3).

Да се постри алгоритъм по описаната идея и да се извършат екперименти, подобни на описаните.

Задача 2. Тази задача е обобщение на задача 1, в която се прилага и свойство P4. На фиг. 5 и 6 са дадени два случая на правоъгълни масиви (M ¹ N), в които с права линия са посочени елементите от диагонала, започващ от елемента с индекси [M][N]. Съгласно свойство P4 всички елементи от диагонала са наредени в ненамаляващ ред. В случай че масивът е квадратен, посочените диагонали представляват главния диагонал в съответния масив.

Ето основните случаи, които трябва да се разгледат:

a) Ако a[M][N] = x, елементът е намерен и търсенето завършва с успех.

b) Ако x > a[M][N], масивът не съдържа елемент със стойност x и търсенето завършва с неуспех (съгласно P1).

c) Ако случаите a) и b) не са в сила, тогава се прилага двоично търсене в диагоналния ред за намиране на елемент със стойност x. Ако такъв елемент се намери, търсенето завършва с успех. Ако няма такъв елемент, тогава се търси елемент, чиято стойност е най-голямата в диагонала, но не по-голяма от x. На двете фигури това е защрихованият елемент. Ако индексите му са [p][q], тогава търсенето продължава в подмасивите [p+1..M][1..N] и [1..p] [q+1..N], за които се прилaга процедурата от по-горе.

d) Елементът с индекси [1][1] и защрихованият елемент определят подмасив, в който със сигурност няма елемент със стойност x.

Фигура 5. Правогъгълен масив, M > N

Фигура 6. Правогъгълен масив, M < N

Да се постри алгоритъм по описаната идея и да се извършат екперименти, подобни на описаните в т. 5.

Задача 3. Да се построи алгоритъм, с който се намира най-малкото число в 2D частично нареден масив, което не е елемент на масива.

Задача 4. Да се построи алгоритъм за намиране на всичките елементи на 2D частично нареден масив с дадена стойност.

Задача 5. Да се построи алгоритъм, с който се пресмята броят на елементите в 2D частично нареден масив, които са в даден инервал.

Задача 6. Да се построи алгоритъм за търсене в 3D частично нареден масив.

БЕЛЕЖКИ

1. Dijkstra E. (1985) The Saddleback Search. Note EWD-934. Available at http:// www.cs.utexas.edu/users/EWD/index09xx.html

2. Gidney C. Searching a Sorted Matrix Faster. http://twistedoakstudios.com/blog/ Post5365_searching-a-sorted-matrix-faster

3. Searching a 2D Sorted Matrix (Parts I, II, and III)

http://leetcode.com/2010/10/searching-2d-sorted-matrix.html

4. E. Dijkstra е удостоен през 1972 г. с Turing Award (присъждана от ACM) за фундаментален принос в областта на езиците за програмиране.

5. Gries D. Saddleback Search.

http://www.cs.geneseo.edu/~baldwin/math-thinking/saddleback.html

http://www.cs.cornell.edu/Courses/cs6110/2012sp/notes/griesLectureOnAlgorithms. pdf

6. MATLAB. Latest Release R2013b. http://www.mathworks.com/

ЛИТЕРАТУРА

Agarwal, P. & Sharir, M. (1998). Efficient Algorithms for Geometric Optimization. ACM Computing Surveys, vol. 30, No. 4, 412 – 458

Bird, R. (2006). Improving saddleback search: a lesson in algorithm design. Mathematics of Program Construction. Springer, LNCS 4014, 82 – 89.

Bird R. (2010). Improving on saddleback search. Pearls of Functional Algorithm Design. Cambridge University Press, 12 – 20.

Linial, N & Saks, M. (1985). Searching ordered structures. Journal of Algorithms. Vol 6, Issue 1, 86 – 103. are implemented in the programming environment of Microsoft Visual C++. Additional experiments were conducted to find out the respective execution time for each of these five algorithms by selecting a variety of values for the number of rows and columns. Some of the obtained results are presented in tables, included in the text of the paper, and are also accompanied by the corresponding charts. The best values for the execution time are established for the search algorithm through concentric subarrays.

2025 година
Книжка 6
ENHANCING STUDENT MOTIVATION AND ACHIEVEMENT THROUGH DIGITAL MIND MAPPING

Mikloš Kovač, Mirjana Brdar, Goran Radojev, Radivoje Stojković

OPTIMIZATION VS BOOSTING: COMPARISON OF STRATEGIES ON EDUCATIONAL DATASETS TO EXPLORE LOW-PERFORMING AT-RISK AND DROPOUT STUDENTS

Ranjit Paul, Asmaa Mohamed, Peren Jerfi Canatalay, Ashima Kukkar, Sadiq Hussain, Arun K. Baruah, Jiten Hazarika, Silvia Gaftandzhieva, Esraa A. Mahareek, Abeer S. Desuky, Rositsa Doneva

ARTIFICIAL INTELLIGENCE AS A TOOL FOR PEDAGOGICAL INNOVATIONS IN MATHEMATICS EDUCATION

Stanka Hadzhikoleva, Maria Borisova, , Borislava Kirilova

Книжка 4
Книжка 3
МОДЕЛИ НА ВЕРОЯТНОСТНИ ПРОСТРАНСТВА В ОЛИМПИАДНИ ЗАДАЧИ

Драгомир Грозев, Станислав Харизанов

Книжка 1
A NOTE ON A GENERALIZED DYNAMICAL SYSTEM OCCURS IN MODELLING “THE BATTLE OF THE SEXES”: CHAOS IN SOCIOBIOLOGY

Nikolay Kyurkchiev, Anton Iliev, Vesselin Kyurkchiev, Angel Golev, Todorka Terzieva, Asen Rahnev

EDUCATIONAL RESOURCES FOR STUDYING MIDSEGMENTS OF TRIANGLE AND TRAPEZOID

Toni Chehlarova1), Neda Chehlarova2), Georgi Gachev

2024 година
Книжка 6
ВЪЗМОЖНОСТИ ЗА ИЗГРАЖДАНЕ НА МЕЖДУПРЕДМЕТНИ ВРЪЗКИ МАТЕМАТИКА – ИНФОРМАТИКА

Елена Каращранова, Ирена Атанасова, Надежда Борисова

Книжка 5
FRAMEWORK FOR DESIGNING VISUALLY ORIENTATED TOOLS TO SUPPORT PROJECT MANAGEMENT

Dalibor Milev, Nadezhda Borisova, Elena Karashtranova

3D ОБРАЗОВАТЕЛЕН ПОДХОД В ОБУЧЕНИЕТО ПО СТЕРЕОМЕТРИЯ

Пеньо Лебамовски, Марияна Николова

Книжка 4
DYNAMICS OF A NEW CLASS OF OSCILLATORS: MELNIKOV’S APPROACH, POSSIBLE APPLICATION TO ANTENNA ARRAY THEORY

Nikolay Kyurkchiev, Tsvetelin Zaevski, Anton Iliev, Vesselin Kyurkchiev, Asen Rahnev

Книжка 3
РАЗСТОЯНИЯ МЕЖДУ ЗАБЕЛЕЖИТЕЛНИ ТОЧКИ И НЕРАВЕНСТВА В ИЗПЪКНАЛ ЧЕТИРИЪГЪЛНИК

Йордан Табов, Станислав Стефанов, Красимир Кънчев, Хаим Хаимов

USING AI TO IMPROVE ANSWER EVALUATION IN AUTOMATED EXAMS

Georgi Cholakov, Asya Stoyanova-Doycheva

Книжка 2
ON INTEGRATION OF STEM MODULES IN MATHEMATICS EDUCATION

Elena Karashtranova, Aharon Goldreich, Nadezhda Borisova

Книжка 1
STUDENT SATISFACTION WITH THE QUALITY OF A BLENDED LEARNING COURSE

Silvia Gaftandzhieva, Rositsa Doneva, Sadiq Hussain, Ashis Talukder, Gunadeep Chetia, Nisha Gohain

MODERN ROAD SAFETY TRAINING USING GAME-BASED TOOLS

Stefan Stavrev, Ivelina Velcheva

ARTIFICIAL INTELLIGENCE FOR GOOD AND BAD IN CYBER AND INFORMATION SECURITY

Nikolay Kasakliev, Elena Somova, Margarita Gocheva

2023 година
Книжка 6
QUALITY OF BLENDED LEARNING COURSES: STUDENTS’ PERSPECTIVE

Silvia Gaftandzhieva, Rositsa Doneva, Sadiq Hussain, Ashis Talukder, Gunadeep Chetia, Nisha Gohain

МОДЕЛ НА ЛЕОНТИЕВ С MS EXCEL

Велика Кунева, Мариян Милев

Книжка 5
AREAS ASSOCIATED TO A QUADRILATERAL

Oleg Mushkarov, Nikolai Nikolov

ON THE DYNAMICS OF A ClASS OF THIRD-ORDER POLYNOMIAL DIFFERENCE EQUATIONS WITH INFINITE NUMBER OF PERIOD-THREE SOLUTIONS

Jasmin Bektešević, Vahidin Hadžiabdić, Midhat Mehuljić, Sadjit Metović, Haris Lulić

СИСТЕМА ЗА ИЗВЛИЧАНЕ И ВИЗУАЛИЗАЦИЯ НА ДАННИ ОТ ИНТЕРНЕТ

Георги Чолаков, Емил Дойчев, Светла Коева

Книжка 4
MULTIPLE REPRESENTATIONS OF FUNCTIONS IN THE FRAME OF DISTANCE LEARNING

Radoslav Božić, Hajnalka Peics, Aleksandar Milenković

INTEGRATED LESSONS IN CALCULUS USING SOFTWARE

Pohoriliak Oleksandr, Olga Syniavska, Anna Slyvka-Tylyshchak, Antonina Tegza, Alexander Tylyshchak

Книжка 3
ПРИЛОЖЕНИЕ НА ЕЛЕМЕНТИ ОТ ГЕОМЕТРИЯТА НА ЧЕТИРИЪГЪЛНИКА ЗА РЕШАВАНЕ НА НЕСТАНДАРТНИ ЗАДАЧИ

Йордан Табов, Веселин Ненков, Асен Велчев, Станислав Стефанов

Книжка 2
Книжка 1
НОВА ФОРМУЛА ЗА ЛИЦЕ НА ЧЕТИРИЪГЪЛНИК (ЧЕТИВО ЗА VII КЛАС)

Йордан Табов, Асен Велчев, Станислав Стефанов, Хаим Хаимов

2022 година
Книжка 6
MOBILE GAME-BASED MATH LEARNING FOR PRIMARY SCHOOL

Margarita Gocheva, Nikolay Kasakliev, Elena Somova

Книжка 5
SECURITY ANALYSIS ON CONTENT MANAGEMENT SYSTEMS

Lilyana Petkova, Vasilisa Pavlova

MONITORING OF STUDENT ENROLMENT CAMPAIGN THROUGH DATA ANALYTICS TOOLS

Silvia Gaftandzhieva, Rositsa Doneva, Milen Bliznakov

TYPES OF SOLUTIONS IN THE DIDACTIC GAME “LOGIC MONSTERS”

Nataliya Hristova Pavlova, Michaela Savova Toncheva

Книжка 4
PERSONAL DATA PROCESSING IN A DIGITAL EDUCATIONAL ENVIRONMENT

Evgeniya Nikolova, Mariya Monova-Zheleva, Yanislav Zhelev

Книжка 3
Книжка 2
STEM ROBOTICS IN PRIMARY SCHOOL

Tsanko Mihov, Gencho Stoitsov, Ivan Dimitrov

A METAGRAPH MODEL OF CYBER PROTECTION OF AN INFORMATION SYSTEM

Emiliya Koleva, Evgeni Andreev, Mariya Nikolova

Книжка 1
CONVOLUTIONAL NEURAL NETWORKS IN THE TASK OF IMAGE CLASSIFICATION

Larisa Zelenina, Liudmila Khaimina, Evgenii Khaimin, D. Khripunov, Inga Zashikhina

INNOVATIVE PROPOSALS FOR DATABASE STORAGE AND MANAGEMENT

Yulian Ivanov Petkov, Alexandre Ivanov Chikalanov

APPLICATION OF MATHEMATICAL MODELS IN GRAPHIC DESIGN

Ivaylo Staribratov, Nikol Manolova

РЕШЕНИЯ НА КОНКУРСНИ ЗАДАЧИ БРОЙ 6, 2021 Г.

Задача 1. Дадени са различни естествени числа, всяко от които има прос- ти делители, не по-големи от . Докажете, че произведението на някои три от тези числа е точен куб. Решение: числата са представим във вида . Нека разгледаме квадрат

2021 година
Книжка 6
E-LEARNING DURING COVID-19 PANDEMIC: AN EMPIRICAL RESEARCH

Margarita Gocheva, Nikolay Kasakliev, Elena Somova

Книжка 5
ПОДГОТОВКА ЗА XXV МЛАДЕЖКА БАЛКАНИАДА ПО МАТЕМАТИКА 2021

Ивайло Кортезов, Емил Карлов, Мирослав Маринов

EXCEL’S CALCULATION OF BASIC ASSETS AMORTISATION VALUES

Vehbi Ramaj, Sead Rešić, Anes Z. Hadžiomerović

EDUCATIONAL ENVIRONMENT AS A FORM FOR DEVELOPMENT OF MATH TEACHERS METHODOLOGICAL COMPETENCE

Olha Matiash, Liubov Mykhailenko, Vasyl Shvets, Oleksandr Shkolnyi

Книжка 4
LEARNING ANALYTICS TOOL FOR BULGARIAN SCHOOL EDUCATION

Silvia Gaftandzhieva, Rositsa Doneva, George Pashev, Mariya Docheva

Книжка 3
THE PROBLEM OF IMAGES’ CLASSIFICATION: NEURAL NETWORKS

Larisa Zelenina, Liudmila Khaimina, Evgenii Khaimin, D. Khripunov, Inga Zashikhina

MIDLINES OF QUADRILATERAL

Sead Rešić, Maid Omerović, Anes Z. Hadžiomerović, Ahmed Palić

ВИРТУАЛЕН ЧАС ПО МАТЕМАТИКА

Севдалина Георгиева

Книжка 2
MOBILE MATH GAME PROTOTYPE ON THE BASE OF TEMPLATES FOR PRIMARY SCHOOL

Margarita Gocheva, Elena Somova, Nikolay Kasakliev, Vladimira Angelova

КОНКУРСНИ ЗАДАЧИ БРОЙ 2/2021 Г.

Краен срок за изпращане на решения: 0 юни 0 г.

РЕШЕНИЯ НА ЗАДАЧИТЕ ОТ БРОЙ 1, 2021

Краен срок за изпращане на решения: 0 юни 0 г.

Книжка 1
СЕДЕМНАДЕСЕТА ЖАУТИКОВСКА ОЛИМПИАДА ПО МАТЕМАТИКА, ИНФОРМАТИКА И ФИЗИКА АЛМАТИ, 7-12 ЯНУАРИ 2021

Диян Димитров, Светлин Лалов, Стефан Хаджистойков, Елена Киселова

ОНЛАЙН СЪСТЕЗАНИЕ „VIVA МАТЕМАТИКА С КОМПЮТЪР“

Петър Кендеров, Тони Чехларова, Георги Гачев

2020 година
Книжка 6
ABSTRACT DATA TYPES

Lasko M. Laskov

Книжка 5
GAMIFICATION IN CLOUD-BASED COLLABORATIVE LEARNING

Denitza Charkova, Elena Somova, Maria Gachkova

NEURAL NETWORKS IN A CHARACTER RECOGNITION MOBILE APPLICATION

L.I. Zelenina, L.E. Khaimina, E.S. Khaimin, D.I. Antufiev, I.M. Zashikhina

APPLICATIONS OF ANAGLIFIC IMAGES IN MATHEMATICAL TRAINING

Krasimir Harizanov, Stanislava Ivanova

МЕТОД НА ДЕЦАТА В БЛОКА

Ивайло Кортезов

Книжка 4
TECHNOLOGIES AND TOOLS FOR CREATING ADAPTIVE E-LEARNING CONTENT

Todorka Terzieva, Valya Arnaudova, Asen Rahnev, Vanya Ivanova

Книжка 3
MATHEMATICAL MODELLING IN LEARNING OUTCOMES ASSESSMENT (BINARY MODEL FOR THE ASSESSMMENT OF STUDENT’S COMPETENCES FORMATION)

L. E. Khaimina, E. A. Demenkova, M. E. Demenkov, E. S. Khaimin, L. I. Zelenina, I. M. Zashikhina

PROBLEMS 2 AND 5 ON THE IMO’2019 PAPER

Sava Grozdev, Veselin Nenkov

Книжка 2
ЗА ВЕКТОРНОТО ПРОСТРАНСТВО НА МАГИЧЕСКИТЕ КВАДРАТИ ОТ ТРЕТИ РЕД (В ЗАНИМАТЕЛНАТА МАТЕМАТИКА)

Здравко Лалчев, Маргарита Върбанова, Мирослав Стоимиров, Ирина Вутова

КОНКУРЕНТНИ ПЕРПЕНДИКУЛЯРИ, ОПРЕДЕЛЕНИ ОТ ПРАВИЛНИ МНОГОЪГЪЛНИЦИ

Йоана Христова, Геновева Маринова, Никола Кушев, Светослав Апостолов, Цветомир Иванов

A NEW PROOF OF THE FEUERBACH THEOREM

Sava Grozdev, Hiroshi Okumura, Deko Dekov

PROBLEM 3 ON THE IMO’2019 PAPER

Sava Grozdev, Veselin Nenkov

Книжка 1
GENDER ISSUES IN VIRTUAL TRAINING FOR MATHEMATICAL KANGAROO CONTEST

Mark Applebaum, Erga Heller, Lior Solomovich, Judith Zamir

KLAMKIN’S INEQUALITY AND ITS APPLICATION

Šefket Arslanagić, Daniela Zubović

НЯКОЛКО ПРИЛОЖЕНИЯ НА ВЪРТЯЩАТА ХОМОТЕТИЯ

Сава Гроздев, Веселин Ненков

2019 година
Книжка 6
DISCRETE MATHEMATICS AND PROGRAMMING – TEACHING AND LEARNING APPROACHES

Mariyana Raykova, Hristina Kostadinova, Stoyan Boev

CONVERTER FROM MOODLE LESSONS TO INTERACTIVE EPUB EBOOKS

Martin Takev, Elena Somova, Miguel Rodríguez-Artacho

ЦИКЛОИДА

Аяпбергенов Азамат, Бокаева Молдир, Чурымбаев Бекнур, Калдыбек Жансуйген

КАРДИОИДА

Евгений Воронцов, Никита Платонов

БОЛГАРСКАЯ ОЛИМПИАДА ПО ФИНАНСОВОЙ И АКТУАРНОЙ МАТЕМАТИКЕ В РОССИИ

Росен Николаев, Сава Гроздев, Богдана Конева, Нина Патронова, Мария Шабанова

КОНКУРСНИ ЗАДАЧИ НА БРОЯ

Задача 1. Да се намерят всички полиноми, които за всяка реална стойност на удовлетворяват равенството Татяна Маджарова, Варна Задача 2. Правоъгълният триъгълник има остри ъгли и , а центърът на вписаната му окръжност е . Точката , лежаща в , е такава, че и . Симетралите

РЕШЕНИЯ НА ЗАДАЧИТЕ ОТ БРОЙ 1, 2019

Задача 1. Да се намерят всички цели числа , за които

Книжка 5
ДЪЛБОКО КОПИЕ В C++ И JAVA

Христина Костадинова, Марияна Райкова

КОНКУРСНИ ЗАДАЧИ НА БРОЯ

Задача 1. Да се намери безкрайно множество от двойки положителни ра- ционални числа Милен Найденов, Варна

РЕШЕНИЯ НА ЗАДАЧИТЕ ОТ БРОЙ 6, 2018

Задача 1. Точката е левият долен връх на безкрайна шахматна дъска. Една муха тръгва от и се движи само по страните на квадратчетата. Нека е общ връх на някои квадратчета. Казва- ме, че мухата изминава пътя между и , ако се движи само надясно и нагоре. Ако точките и са противоположни върхове на правоъгълник , да се намери броят на пътищата, свърз- ващи точките и , по които мухата може да мине, когато: а) и ; б) и ; в) и

Книжка 4
THE REARRANGEMENT INEQUALITY

Šefket Arslanagić

АСТРОИДА

Борислав Борисов, Деян Димитров, Николай Нинов, Теодор Христов

COMPUTER PROGRAMMING IN MATHEMATICS EDUCATION

Marin Marinov, Lasko Laskov

CREATING INTERACTIVE AND TRACEABLE EPUB LEARNING CONTENT FROM MOODLE COURSES

Martin Takev, Miguel Rodríguez-Artacho, Elena Somova

КОНКУРСНИ ЗАДАЧИ НА БРОЯ

Задача 1. Да се реши уравнението . Христо Лесов, Казанлък Задача 2. Да се докаже, че в четириъгълник с перпендикулярни диагонали съществува точка , за която са изпълнени равенствата , , , . Хаим Хаимов, Варна Задача 3. В правилен 13-ъгълник по произволен начин са избрани два диа- гонала. Каква е вероятността избраните диагонали да не се пресичат? Сава Гроздев, София, и Веселин Ненков, Бели Осъм

РЕШЕНИЯ НА ЗАДАЧИТЕ ОТ БРОЙ 5, 2018

Задача 1. Ако и са съвършени числа, за които целите части на числата и са равни и различни от нула, да се намери .

Книжка 3
RESULTS OF THE FIRST WEEK OF CYBERSECURITY IN ARKHANGELSK REGION

Olga Troitskaya, Olga Bezumova, Elena Lytkina, Tatyana Shirikova

DIDACTIC POTENTIAL OF REMOTE CONTESTS IN COMPUTER SCIENCE

Natalia Sofronova, Anatoliy Belchusov

КОНКУРСНИ ЗАДАЧИ НА БРОЯ

Краен срок за изпращане на решения 30 ноември 2019 г.

РЕШЕНИЯ НА ЗАДАЧИТЕ ОТ БРОЙ 4, 2018

Задача 1. Да се намерят всички тройки естествени числа е изпълнено равенството: а)

Книжка 2
ЕЛЕКТРОНЕН УЧЕБНИК ПО ОБЗОРНИ ЛЕКЦИИ ЗА ДЪРЖАВЕН ИЗПИТ В СРЕДАТА DISPEL

Асен Рахнев, Боян Златанов, Евгения Ангелова, Ивайло Старибратов, Валя Арнаудова, Слав Чолаков

ГЕОМЕТРИЧНИ МЕСТА, ПОРОДЕНИ ОТ РАВНОСТРАННИ ТРИЪГЪЛНИЦИ С ВЪРХОВЕ ВЪРХУ ОКРЪЖНОСТ

Борислав Борисов, Деян Димитров, Николай Нинов, Теодор Христов

ЕКСТРЕМАЛНИ СВОЙСТВА НА ТОЧКАТА НА ЛЕМОАН В ЧЕТИРИЪГЪЛНИК

Веселин Ненков, Станислав Стефанов, Хаим Хаимов

A TRIANGLE AND A TRAPEZOID WITH A COMMON CONIC

Sava Grozdev, Veselin Nenkov

КОНКУРСНИ ЗАДАЧИ НА БРОЯ

Христо Лесов, Казанлък Задача 2. Окръжност с диаметър и правоъгълник с диагонал имат общ център. Да се докаже, че за произволна точка M от е изпълне- но равенството . Милен Найденов, Варна Задача 3. В изпъкналия четириъгълник са изпълнени равенства- та и . Точката е средата на диагонала , а , , и са ортоганалните проекции на съответно върху правите , , и . Ако и са средите съответно на отсечките и , да се докаже, че точките , и лежат на една права.

РЕШЕНИЯ НА ЗАДАЧИТЕ ОТ БРОЙ 3, 2018

Задача 1. Да се реши уравнението . Росен Николаев, Дико Суружон, Варна Решение. Въвеждаме означението , където . Съгласно това означение разлежданото уравнение придобива вида не е решение на уравнението. Затова са възможни само случаите 1) и 2) . Разглеж- даме двата случая поотделно. Случай 1): при е изпълнено равенството . Тогава имаме:

Книжка 1
PROBLEM 6. FROM IMO’2018

Sava Grozdev, Veselin Nenkov

РЕШЕНИЯ НА ЗАДАЧИТЕ ОТ БРОЙ 2, 2018

Задача 1. Да се намери най-малкото естествено число , при което куба с целочислени дължини на ръбовете в сантиметри имат сума на обемите, рав- на на Христо Лесов, Казанлък Решение: тъй като , то не е куб на ес- тествено число и затова . Разглеждаме последователно случаите за . 1) При разглеждаме естествени числа и , за които са изпълнени релациите и . Тогава то , т.е. . Освен това откъдето , т.е. .Така получихме, че . Лесно се проверява, че при и няма естествен

КОНКУРСНИ ЗАДАЧИ НА БРОЯ

Задача 1. Да се намерят всички цели числа , за които

2018 година
Книжка 6
„ЭНЦИКЛОПЕДИЯ ЗАМЕЧАТЕЛЬНЫХ ПЛОСКИХ КРИВЫХ“ – МЕЖДУНАРОДНЫЙ СЕТЕВОЙ ИССЛЕДОВАТЕЛЬСКИЙ ПРОЕКТ В РАМКАХ MITE

Роза Атамуратова, Михаил Алфёров, Марина Белорукова, Веселин Ненков, Валерий Майер, Генадий Клековкин, Раиса Овчинникова, Мария Шабанова, Александр Ястребов

A NEW MEANING OF THE NOTION “EXPANSION OF A NUMBER”

Rosen Nikolaev, Tanka Milkova, Radan Miryanov

Книжка 5
ИТОГИ ПРОВЕДЕНИЯ ВТОРОЙ МЕЖДУНАРОДНОЙ ОЛИМПИАДЬI ПО ФИНАНСОВОЙ И АКТУАРНОЙ МАТЕМАТИКЕ СРЕДИ ШКОЛЬНИКОВ И СТУДЕНТОВ

Сава Гроздев, Росен Николаев, Мария Шабанова, Лариса Форкунова, Нина Патронова

LEARNING AND ASSESSMENT BASED ON GAMIFIED E-COURSE IN MOODLE

Mariya Gachkova, Martin Takev, Elena Somova

УЛИТКА ПАСКАЛЯ

Дарья Коптева, Ксения Горская

КОМБИНАТОРНИ ЗАДАЧИ, СВЪРЗАНИ С ТРИЪГЪЛНИК

Росен Николаев, Танка Милкова, Катя Чалъкова

Книжка 4
ЗА ПРОСТИТЕ ЧИСЛА

Сава Гроздев, Веселин Ненков

ИНЦЕНТЪР НА ЧЕТИРИЪГЪЛНИК

Станислав Стефанов

ЭПИЦИКЛОИДА

Инкар Аскар, Камила Сарсембаева

ГИПОЦИКЛОИДА

Борислав Борисов, Деян Димитров, Иван Стефанов, Николай Нинов, Теодор Христов

Книжка 3
ПОЛИНОМИ ОТ ТРЕТА СТЕПЕН С КОЛИНЕАРНИ КОРЕНИ

Сава Гроздев, Веселин Ненков

ЧЕТИРИДЕСЕТ И ПЕТА НАЦИОНАЛНА СТУДЕНТСКА ОЛИМПИАДА ПО МАТЕМАТИКА

Сава Гроздев, Росен Николаев, Станислава Стоилова, Веселин Ненков

Книжка 2
TWO INTERESTING INEQUALITIES FOR ACUTE TRIANGLES

Šefket Arslanagić, Amar Bašić

ПЕРФЕКТНА ИЗОГОНАЛНОСТ В ЧЕТИРИЪГЪЛНИК

Веселин Ненков, Станислав Стефанов, Хаим Хаимов

НЯКОИ ТИПОВЕ ЗАДАЧИ СЪС СИМЕТРИЧНИ ЧИСЛА

Росен Николаев, Танка Милкова, Радан Мирянов

Книжка 1
Драги читатели,

където тези проценти са наполовина, в Източна Европа те са около 25%, в

COMPUTER DISCOVERED MATHEMATICS: CONSTRUCTIONS OF MALFATTI SQUARES

Sava Grozdev, Hiroshi Okumura, Deko Dekov

ВРЪЗКИ МЕЖДУ ЗАБЕЛЕЖИТЕЛНИ ТОЧКИ В ЧЕТИРИЪГЪЛНИКА

Станислав Стефанов, Веселин Ненков

КОНКУРСНИ ЗАДАЧИ НА БРОЯ

Задача 2. Да се докаже, че всяка от симедианите в триъгълник с лице разделя триъгълника на два триъгълника, лицата на които са корени на урав- нението където и са дължините на прилежащите на симедианата страни на три- ъгълника. Милен Найденов, Варна Задача 3. Четириъгълникът е описан около окръжност с център , като продълженията на страните му и се пресичат в точка . Ако е втората пресечна точка на описаните окръжности на триъгълниците и , да се докаже, че Хаим Х

РЕШЕНИЯ НА ЗАДАЧИТЕ ОТ БРОЙ 2, 2017

Задача 1. Да се определи дали съществуват естествени числа и , при които стойността на израза е: а) куб на естествено число; б) сбор от кубовете на две естествени числа; в) сбор от кубовете на три естествени числа. Христо Лесов, Казанлък Решение: при и имаме . Следова- телно случай а) има положителен отговор. Тъй като при число- то се дели на , то при и имаме е естестве- но число. Следователно всяко число от разглеждания вид при деление на дава ос

2017 година
Книжка 6
A SURVEY OF MATHEMATICS DISCOVERED BY COMPUTERS. PART 2

Sava Grozdev, Hiroshi Okumura, Deko Dekov

ТРИ ИНВАРИАНТЫ В ОДНУ ЗАДА

Ксения Горская, Дарья Коптева, Асхат Ермекбаев, Арман Жетиру, Азат Бермухамедов, Салтанат Кошер, Лили Стефанова, Ирина Христова, Александра Йовкова

GAMES WITH

Aldiyar Zhumashov

SOME NUMERICAL SQUARE ROOTS (PART TWO)

Rosen Nikolaev, Tanka Milkova, Yordan Petkov

ЗАНИМАТЕЛНИ ЗАДАЧИ ПО ТЕМАТА „КАРТИННА ГАЛЕРИЯ“

Мирослав Стоимиров, Ирина Вутова

Книжка 5
ВТОРОЙ МЕЖДУНАРОДНЫЙ СЕТЕВОЙ ИССЛЕДОВАТЕЛЬСКИЙ ПРОЕКТ УЧАЩИХСЯ В РАМКАХ MITE

Мария Шабанова, Марина Белорукова, Роза Атамуратова, Веселин Ненков

SOME NUMERICAL SEQUENCES CONCERNING SQUARE ROOTS (PART ONE)

Rosen Nikolaev, Tanka Milkova, Yordan Petkov

Книжка 4
ГЕНЕРАТОР НА ТЕСТОВЕ

Ангел Ангелов, Веселин Дзивев

INTERESTING PROOFS OF SOME ALGEBRAIC INEQUALITIES

Šefket Arslanagić, Faruk Zejnulahi

PROBLEMS ON THE BROCARD CIRCLE

Sava Grozdev, Hiroshi Okumura, Deko Dekov

ПРИЛОЖЕНИЕ НА ЛИНЕЙНАТА АЛГЕБРА В ИКОНОМИКАТА

Велика Кунева, Захаринка Ангелова

СКОРОСТТА НА СВЕТЛИНАТА

Сава Гроздев, Веселин Ненков

Книжка 3
НЯКОЛКО ПРИЛОЖЕНИЯ НА ТЕОРЕМАТА НА МЕНЕЛАЙ ЗА ВПИСАНИ ОКРЪЖНОСТИ

Александра Йовкова, Ирина Христова, Лили Стефанова

НАЦИОНАЛНА СТУДЕНТСКА ОЛИМПИАДА ПО МАТЕМАТИКА

Сава Гроздев, Росен Николаев, Веселин Ненков

СПОМЕН ЗА ПРОФЕСОР АНТОН ШОУРЕК

Александра Трифонова

Книжка 2
ИЗКУСТВЕНА ИМУННА СИСТЕМА

Йоанна Илиева, Селин Шемсиева, Светлана Вълчева, Сюзан Феимова

ВТОРИ КОЛЕДЕН ЛИНГВИСТИЧЕН ТУРНИР

Иван Держански, Веселин Златилов

Книжка 1
ГЕОМЕТРИЯ НА ЧЕТИРИЪГЪЛНИКА, ТОЧКА НА МИКЕЛ, ИНВЕРСНА ИЗОГОНАЛНОСТ

Веселин Ненков, Станислав Стефанов, Хаим Хаимов

2016 година
Книжка 6
ПЕРВЫЙ МЕЖДУНАРОДНЫЙ СЕТЕВОЙ ИССЛЕДОВАТЕЛЬСКИЙ ПРОЕКТ УЧАЩИХСЯ В РАМКАХ MITE

Мария Шабанова, Марина Белорукова, Роза Атамуратова, Веселин Ненков

НЕКОТОРЫЕ ТРАЕКТОРИИ, КОТОРЫЕ ОПРЕДЕЛЕНЫ РАВНОБЕДРЕННЫМИ ТРЕУГОЛЬНИКАМИ

Ксения Горская, Дарья Коптева, Даниил Микуров, Еркен Мудебаев, Казбек Мухамбетов, Адилбек Темирханов, Лили Стефанова, Ирина Христова, Радина Иванова

ПСЕВДОЦЕНТЪР И ОРТОЦЕНТЪР – ЗАБЕЛЕЖИТЕЛНИ ТОЧКИ В ЧЕТИРИЪГЪЛНИКА

Веселин Ненков, Станислав Стефанов, Хаим Хаимов

FUZZY LOGIC

Reinhard Magenreuter

GENETIC ALGORITHM

Reinhard Magenreuter

Книжка 5
NEURAL NETWORKS

Reinhard Magenreuter

Книжка 4
АКТИВНО, УЧАСТВАЩО НАБЛЮДЕНИЕ – ТИП ИНТЕРВЮ

Христо Христов, Христо Крушков

ХИПОТЕЗАТА В ОБУЧЕНИЕТО ПО МАТЕМАТИКА

Румяна Маврова, Пенка Рангелова, Елена Тодорова

Книжка 3
ОБОБЩЕНИЕ НА ТЕОРЕМАТА НА ЧЕЗАР КОШНИЦА

Сава Гроздев, Веселин Ненков

Книжка 2
ОЙЛЕР-ВЕН ДИАГРАМИ ИЛИ MZ-КАРТИ В НАЧАЛНАТА УЧИЛИЩНА МАТЕМАТИКА

Здравко Лалчев, Маргарита Върбанова, Ирина Вутова, Иван Душков

ОБВЪРЗВАНЕ НА ОБУЧЕНИЕТО ПО АЛГЕБРА И ГЕОМЕТРИЯ

Румяна Маврова, Пенка Рангелова

Книжка 1
STATIONARY NUMBERS

Smaiyl Makyshov

МЕЖДУНАРОДНА ЖАУТИКОВСКА ОЛИМПИАДА

Сава Гроздев, Веселин Ненков

2015 година
Книжка 6
Книжка 5
Книжка 4
Книжка 3
МОТИВАЦИОННИТЕ ЗАДАЧИ В ОБУЧЕНИЕТО ПО МАТЕМАТИКА

Румяна Маврова, Пенка Рангелова, Зара Данаилова-Стойнова

Книжка 2
САМОСТОЯТЕЛНО РЕШАВАНЕ НА ЗАДАЧИ С EXCEL

Пламен Пенев, Диана Стефанова

Книжка 1
ГЕОМЕТРИЧНА КОНСТРУКЦИЯ НА КРИВА НА ЧЕВА

Сава Гроздев, Веселин Ненков

2014 година
Книжка 6
КОНКУРЕНТНОСТ, ПОРОДЕНА ОТ ТАНГЕНТИ

Сава Гроздев, Веселин Ненков

Книжка 5
ИНФОРМАТИКА В ШКОЛАХ РОССИИ

С. А. Бешенков, Э. В. Миндзаева

ОЩЕ ЕВРИСТИКИ С EXCEL

Пламен Пенев

ДВА ПОДХОДА ЗА ИЗУЧАВАНЕ НА УРАВНЕНИЯ В НАЧАЛНАТА УЧИЛИЩНА МАТЕМАТИКА

Здравко Лалчев, Маргарита Върбанова, Ирина Вутова

Книжка 4
ОБУЧЕНИЕ В СТИЛ EDUTAINMENT С ИЗПОЛЗВАНЕ НА КОМПЮТЪРНА ГРАФИКА

Христо Крушков, Асен Рахнев, Мариана Крушкова

Книжка 3
ИНВЕРСИЯТА – МЕТОД В НАЧАЛНАТА УЧИЛИЩНА МАТЕМАТИКА

Здравко Лалчев, Маргарита Върбанова

СТИМУЛИРАНЕ НА ТВОРЧЕСКА АКТИВНОСТ ПРИ БИЛИНГВИ ЧРЕЗ ДИНАМИЧЕН СОФТУЕР

Сава Гроздев, Диана Стефанова, Калина Василева, Станислава Колева, Радка Тодорова

ПРОГРАМИРАНЕ НА ЧИСЛОВИ РЕДИЦИ

Ивайло Старибратов, Цветана Димитрова

Книжка 2
ФРАКТАЛЬНЫЕ МЕТО

Валерий Секованов, Елена Селезнева, Светлана Шляхтина

Книжка 1
ЕВРИСТИКА С EXCEL

Пламен Пенев

SOME INEQUALITIES IN THE TRIANGLE

Šefket Arslanagić

2013 година
Книжка 6
Книжка 5
МАТЕМАТИЧЕСКИЕ РЕГАТЬI

Александр Блинков

Книжка 4
Книжка 3
АКАДЕМИК ПЕТЪР КЕНДЕРОВ НА 70 ГОДИНИ

чл. кор. Юлиан Ревалски

ОБЛАЧНИ ТЕХНОЛОГИИ И ВЪЗМОЖНОСТИ ЗА ПРИЛОЖЕНИЕ В ОБРАЗОВАНИЕТО

Сава Гроздев, Иванка Марашева, Емил Делинов

СЪСТЕЗАТЕЛНИ ЗАДАЧИ ПО ИНФОРМАТИКА ЗА ГРУПА Е

Ивайло Старибратов, Цветана Димитрова

Книжка 2
ЕКСПЕРИМЕНТАЛНАТА МАТЕМАТИКА В УЧИЛИЩЕ

Сава Гроздев, Борислав Лазаров

МАТЕМАТИКА С КОМПЮТЪР

Сава Гроздев, Деко Деков

ЕЛИПТИЧЕН АРБЕЛОС

Пролет Лазарова

Книжка 1
ФРАГМЕНТИ ОТ ПАМЕТТА

Генчо Скордев

2012 година
Книжка 6
ДВЕ ДИДАКТИЧЕСКИ СТЪЛБИ

Сава Гроздев, Светлозар Дойчев

ТЕОРЕМА НА ПОНСЕЛЕ ЗА ЧЕТИРИЪГЪЛНИЦИ

Сава Гроздев, Веселин Ненков

ИЗЛИЧАНЕ НА ОБЕКТИВНИ ЗНАНИЯ ОТ ИНТЕРНЕТ

Ивайло Пенев, Пламен Пенев

Книжка 5
ДЕСЕТА МЕЖДУНАРОДНА ОЛИМПИАДА ПО ЛИНГВИСТИКА

д–р Иван А. Держански (ИМИ–БАН)

ТЕОРЕМА НА ВАН ОБЕЛ И ПРИЛОЖЕНИЯ

Тодорка Глушкова, Боян Златанов

МАТЕМАТИЧЕСКИ КЛУБ „СИГМА” В СВЕТЛИНАТА НА ПРОЕКТ УСПЕХ

Сава Гроздев, Иванка Марашева, Емил Делинов

I N M E M O R I A M

На 26 септември 2012 г. след продължително боледуване ни напусна проф. дпн Иван Ганчев Донев. Той е първият професор и първият доктор на науките в България по методика на обучението по математика. Роден е на 6 май 1935 г. в с. Страхилово, В. Търновско. След завършване на СУ “Св. Кл. Охридски” става учител по математика в гр. Свищов. Тук той организира първите кръжоци и със- тезания по математика. През 1960 г. Иван Ганчев печели конкурс за асистент в СУ и още през следващата година започ

Книжка 4
Книжка 3
СЛУЧАЙНО СЪРФИРАНЕ В ИНТЕРНЕТ

Евгения Стоименова

Книжка 2
SEEMOUS OLYMPIAD FOR UNIVERSITY STUDENTS

Sava Grozdev, Veselin Nenkov

EUROMATH SCIENTIFIC CONFERENCE

Sava Grozdev, Veselin Nenkov

FIVE WAYS TO SOLVE A PROBLEM FOR A TRIANGLE

Šefket Arslanagić, Dragoljub Milošević

ПРОПОРЦИИ

Валя Георгиева

ПЪТЕШЕСТВИЕ В СВЕТА НА КОМБИНАТОРИКАТА

Росица Керчева, Румяна Иванова

ПОЛЗОТВОРНА ПРОМЯНА

Ивайло Старибратов

Книжка 1
ЗА ЕЛЕКТРОННОТО ОБУЧЕНИЕ

Даниела Дурева (Тупарова)

МАТЕМАТИКАТА E ЗАБАВНА

Веселина Вълканова

СРАВНЯВАНЕ НА ИЗРАЗИ С КВАДРАТНИ КОРЕНИ

Гинка Бизова, Ваня Лалева