• Algoritmni to’g’riligini tekshirish
  • Dastur Kodi
  • Algoritmni ishlab chiqish




    Download 0,54 Mb.
    Pdf ko'rish
    bet9/10
    Sana17.05.2024
    Hajmi0,54 Mb.
    #239606
    1   2   3   4   5   6   7   8   9   10
    Bog'liq
    4-mustaqil ish algoritmlarni loyihalash

    Algoritmni ishlab chiqish:
    Kruskal algoritmi quyidagi qadamlardan iborat:a. Barcha 
    grafning alohida taklif qilingan qatnashuvchi doimiy birlashmalari bo‘yicha 
    saqlangan.b. Barcha birlashmalarni og'irligi bo‘yicha saralash.c. Har bir birlashmani 
    qabul qilingan vaqtda, agar ular birlashmagan bo‘lsa, ularni qo‘shish.d. Yangi daraxt 
    hosil qilinganida birlashmalarni qabul qilingan vaqtda tekshiring va buni qo‘shing.e. 
    Agar daraxtning hajmi graf qatnashuvchilari sonidan kam bo‘lsa, tekshirishni 
    to‘xtating. 
    Algoritmni to’g’riligini tekshirish:
    Algoritmda minimum spannig tree hosil qilishda 
    tekshiriladi va barcha qatnashuvchi birlashmalari birlashib olinadi. Nihoyat, daraxt 
    qatnashuvchi birlashmalar va minimum ko'rsatkichli masofalar orqali hisoblanadi. 
    Dastur Kodi:
    Quyidagi Python kodida Kruskal algoritmi ishlatilgan: 
    def xasislik(graph, start): 
    # Barcha yulduzlarni uzunligi bilan e'lon qilamiz 
    distances = {node: float('inf') for node in graph} 
    # Boshlang'ich yulduz uchun masofani 0 ga o'zgartiramiz 
    distances[start] = 0 
    # Har bir yulduzni qidirishning o'tganligini tekshiramiz 
    visited = set() 
    while len(visited) < len(graph): 
    # Eng kichik masofaga ega bo'lgan yulduzni tanlaymiz 
    min_distance = float('inf') 
    min_node = None 
    for node in graph: 
    if distances[node] < min_distance and node not in visited: 
    min_distance = distances[node] 
    min_node = node 
    # Tanlangan yulduzni e'lon qilamiz 
    visited.add(min_node) 
    # Tanlangan yulduzning barcha qomsatuvlari uchun masofalarni hisoblaymiz 
    for neighbor in graph[min_node]: 
    distance = distances[min_node] + graph[min_node][neighbor] 


    # Agar yangi masofa avvalgi masofadan kichik bo'lsa, yangilanadi 
    if distance < distances[neighbor]: 
    distances[neighbor] = distance 
    return distances 
    graph = { 
    'A': {'B': 7, 'D': 5 }, 
    'B': {'A': 7, 'D': 9, 'C': 8, 'E': 7}, 
    'C': {'B': 8, 'E': 5 }, 
    'D': {'A': 5, 'B': 9, 'F': 6, 'E': 15}, 
    'E': {'C': 5, 'D': 15, 'F': 8, 'B': 7, 'G': 9}, 
    'F': {'D': 6, 'E': 8, 'G': 11 }, 
    'G': {'F': 11, 'E': 9 } 

    start_node = 'A' 
    distances = xasislik(graph, start_node) 
    print("Eng kichik daraxt:") 
    for node in sorted(distances): 
    print(f"{start_node} dan {node} ga masofa: {distances[node]}") 

    Download 0,54 Mb.
    1   2   3   4   5   6   7   8   9   10




    Download 0,54 Mb.
    Pdf ko'rish