2.1 DASTURLASH TILLARIDA IZLASH ALGORITMLARIDAN FOYDALANISH.
Dasturlash tillarida izlash (search) algoritmari, ma'lum bir ma'lumotni topish va uni aniqlash uchun ishlatiladi. Quyidagi bir necha umumiy izlash algoritmalarini keltirib o'tamiz:
1. O'nlab O'q Izlash (Linear Search):
Bu algoritm massiv, ro'yhat yoki boshqa ma'lumot to'plamini boshidan oxirigacha solishtirib, kerakli ma'lumotni topishda ishlatiladi. O'nlab o'q izlash algoritmi sodda va qulay, ammo tezlikda ishlash qobiliyati kam.
2. Burchak Tekshirish (Binary Search):
Agar ma'lumotlar to'plami tartiblangan bo'lsa, burchak tekshirish algoritmi ishlatiladi. Bu algoritm ma'lum bir elementni topish uchun massivni o'rtadan boshlab solishtiradi.
3. Hash Izlash (Hash Search):
Hash izlash algoritmi ma'lum bir kiritilgan ma'lumotni o'zining kalit (hash) qiymati orqali topadi. Hash funksiyasi ma'lumotlarning kalit qiymatlarini hosil qiladi va ularni indeks sifatida ishlatadi. Bu algoritm tez ishlaydi, ammo moslashtirish uchun yaxshi bir hash funksiyasining aniqlanishi kerak.
4. DFS (Depth-First Search) va BFS (Breadth-First Search):
Bu algoritmalar graf (tuzilma) tahlil qilishda ishlatiladi. DFS ko'rib chiqish algoritmi yuqori, qo'shimcha ma'lumotni izlashda ishlatiladi. U har bir to'g'ri oldindan o'tkazish orqali bor yo'nalishda murojaat qiladi.
5. Dijkstra Algoritmi:
Dijkstra algoritmi eng qisqa yollar (mazmunli masofalar)ni topishda va uning saralashda ishlatiladi.
using System;
class Dijkstra
{
private static int V = 9;
private int EngQisqaYo'l(int[] masofalar, bool[] SPG)
{
int engQisqaMasofa = int.MaxValue, engQisqaIndeks = -1;
for (int v = 0; v < V; ++v)
if (SPG[v] == false && masofalar[v] <= engQisqaMasofa)
{
engQisqaMasofa = masofalar[v];
engQisqaIndeks = v;
}
return engQisqaIndeks;
}
private void NatijaChiqarish(int[] masofalar)
{
Console.WriteLine("Tugun\tMasofa from boshlang'ich");
for (int i = 0; i < V; ++i)
Console.WriteLine(i + " \t " + masofalar[i]);
}
public void DijkstraAlgoritmi(int[,] graf, int boshlang'ichTugun)
{
int[] masofalar = new int[V];
bool[] SPG = new bool[V];
for (int i = 0; i < V; ++i)
{
masofalar[i] = int.MaxValue;
SPG[i] = false;
}
masofalar[boshlang'ichTugun] = 0;
for (int count = 0; count < V - 1; ++count)
{
int u = EngQisqaYo'l(masofalar, SPG);
SPG[u] = true;
for (int v = 0; v < V; ++v)
if (!SPG[v] && graf[u, v] != 0 &&
masofalar[u] != int.MaxValue &&
masofalar[u] + graf[u, v] < masofalar[v])
masofalar[v] = masofalar[u] + graf[u, v];
}
NatijaChiqarish(masofalar);
}
}
Bu kodi orqali Dijkstra algoritmi yordamida eng qisqa yo'lni topish uchun ishlatishingiz mumkin.
Bu algoritmlar qo'shimcha ma'lumotlar yig'ib chiqish uchun juda mashhur algoritmlardir va ko'p sohada ishlatiladi.
|