128- كورس لغة بايثون Python شرح هياكل البيانات في بايثون – Python Data Structures – Graphs

Python Data Structures – Graphs

Python Data Structures – Graphs

الرسوم البيانية (Graphs) هي واحدة من أهم هياكل البيانات المستخدمة في علم الحاسوب، وتستخدم لتمثيل العلاقات بين الكيانات المختلفة. في سياق البرمجة بلغة بايثون، الرسوم البيانية تُستخدم لنمذجة شبكات الاتصال، الخرائط، الروابط بين صفحات الويب، وغيرها الكثير من التطبيقات. الرسم البياني بشكل عام يتكون من مجموعة من العقد (Nodes) والوصلات (Edges) التي تربط بين هذه العقد.

تمثيل الرسوم البيانية في بايثون

يمكن تمثيل الرسوم البيانية في بايثون بعدة طرق، الأكثر شيوعاً منها هو استخدام القوائم المتجاورة (Adjacency Lists) والمصفوفات المتجاورة (Adjacency Matrices). القوائم المتجاورة تمثل الرسم البياني كمجموعة من القوائم، حيث تحتوي كل قائمة على العقد المتصلة بعقدة معينة. بينما تستخدم المصفوفات المتجاورة مصفوفة ثنائية الأبعاد لتمثيل وجود أو عدم وجود وصلات بين العقد.


# تمثيل الرسم البياني باستخدام قائمة متجاورة
graph = {
    'A': ['B', 'C'],
    'B': ['A', 'D', 'E'],
    'C': ['A', 'F'],
    'D': ['B'],
    'E': ['B', 'F'],
    'F': ['C', 'E']
}

# تمثيل الرسم البياني باستخدام مصفوفة متجاورة
matrix = [
    [0, 1, 1, 0, 0, 0],
    [1, 0, 0, 1, 1, 0],
    [1, 0, 0, 0, 0, 1],
    [0, 1, 0, 0, 0, 0],
    [0, 1, 0, 0, 0, 1],
    [0, 0, 1, 0, 1, 0]
]

عمليات على الرسوم البيانية

الرسوم البيانية توفر العديد من العمليات المفيدة التي يمكن تنفيذها باستخدام بايثون. بعض هذه العمليات تشمل البحث عن المسار الأقصر بين عقدتين، التحقق من وجود دورة في الرسم البياني، واستكشاف الرسم البياني باستخدام خوارزميات مثل البحث بالعمق (Depth-First Search) والبحث بالعرض (Breadth-First Search).


# مثال على البحث بالعمق في الرسم البياني
def dfs(graph, start, visited=None):
    if visited is None:
        visited = set()
    visited.add(start)
    print(start)
    for next in graph[start]:
        if next not in visited:
            dfs(graph, next, visited)

# استكشاف الرسم البياني بدءًا من العقدة 'A'
dfs(graph, 'A')

في هذا المثال، نستخدم خوارزمية البحث بالعمق لاستكشاف الرسم البياني بدءًا من العقدة ‘A’. هذه الخوارزميات تعتبر أساسية في تحليل الرسوم البيانية وتقديم حلول لمشاكل معقدة في الرياضيات وعلم الحاسوب.