هياكل البيانات
توفر هذه المكتبة تطبيقات الخوارزميات والمواد البنية الكلاسيكية.
منظمة
ينقسم المشروع إلى حزمتين ، الخوارزميات والهيكل. تحتوي حزمة الخوارزميات على تطبيقات خوارزميات في الغالب بمفردها بينما تحتوي حزمة الهيكل على هياكل بيانات وخوارزميات تعمل عليها بشكل حصري.
الخوارزميات
فيما يلي قائمة من الخوارزميات تحت حزمة الخوارزميات:
في binarysearch.py:
- البحث الثنائي القياسي: البحث الثنائي القياسي. https://en.wikipedia.org/wiki/binary_search_algorithm
- تحدث أولاً البحث الثنائي: البحث الثنائي القياسي إلا أنه يجد العنصر الأول الذي يطابق مفتاح البحث.
في Expression.py:
في المشاكل
- خوارزمية*: مسار العثور على خوارزمية. https://en.wikipedia.org/wiki/a*_search_algorithm
- خوارزمية* تم تكييفها مع مشكلة 8-puzzle: https://www.cs.princeton.edu/courses/archive/spr10/cos226/assignments/8puzzle.html
في sort.py:
- نوع الاختيار: https://en.wikipedia.org/wiki/selection_sort
- نوع الإدراج: https://en.wikipedia.org/wiki/insertion_sort
- shell sort: https://en.wikipedia.org/wiki/shellsort
- اختلافات من نوع الدمج: https://en.wikipedia.org/wiki/merge_sort
- عدد الانعكاس: عد عدد الانقلابات مع نوع الدمج المعدل
- اختلافات من النوع السريع: بما في ذلك النوع السريع القياسي ، والفرز السريع ثلاثي الاتجاه ، وأخذ العينات السريعة. https://en.wikipedia.org/wiki/quicksort
- نوع الكومة: https://en.wikipedia.org/wiki/Heapsort
- حدد KTH: حدد عنصر KTH بالترتيب. بناء على قسم الفرز السريع.
بناء
فيما يلي قائمة بهياكل البيانات التي تم تنفيذها والخوارزميات التي تعمل عليها:
في LinkedList.py:
- قائمة مرتبطة: https://en.wikipedia.org/wiki/Linked_List
- مكدس مرتبط: تم تنفيذ المكدس بقائمة مرتبطة.
- قائمة الانتظار المرتبطة: قائمة انتظار مع قائمة مرتبطة.
in Unionfind.py: https://en.wikipedia.org/wiki/Disjoint-Set_Data_structure
- اكتشاف سريع: تم تحديد مجموعة Disjoint مع صفيف مثل بنية البيانات. س (1) العثور.
- الاتحاد السريع: تم تنفيذ مجموعة مفككة مع شجرة الرابط الأصل.
- اتحاد سريع متوازن: تم تنفيذ مجموعة التفكيك مع شجرة الوصلات الأم والموازنة في الاتحاد. o (سجل (ن)) الكفاءة للعثور والاتحاد.
- Path Compression Quick Union: Disjoint Set مع شجرة الوصلات الأصل وزيادة مع ضغط المسار.
- ضغط مسار متوازن Quick Union: Disjoint Set مع شجرة الوصلات الأصل مع موازنة وضغط المسار. تقريبا O (1) الكفاءة في البحث والاتحاد.
في symbortable.py:
- شجرة البحث الثنائية: قياسية BST. https://en.wikipedia.org/wiki/binary_search_tree
- شجرة Red & Black: BST متوازنة باستخدام تمثيل 2-3. https://en.wikipedia.org/wiki/red٪E2٪80٪93Black_tree
- جدول التجزئة المنفصل: جدول التجزئة الذي يحل التصادم عن طريق التسلسل لهم في قائمة. https://en.wikipedia.org/wiki/hash_table#separate_chaining
- Open Address Table: جدول التجزئة الذي يحل التصادم مع التحقيق الخطي. https://en.wikipedia.org/wiki/hash_table#open_addressing
في Heap.py:
- كومة ثنائية: تنفيذ قائمة انتظار ذات أولوية مع كومة ثنائية. https://en.wikipedia.org/wiki/binary_heap
في Graph.py:
- الرسم البياني غير الموجود: https://en.wikipedia.org/wiki/graph_(discrete_mathematics)#undirist_graph
- الرسم البياني الموجه: https://en.wikipedia.org/wiki/graph_(discrete_mathematics)#directed_graph
- رسم بياني مرجح غير موجه: https://en.wikipedia.org/wiki/graph_(discrete_mathematics)#weighted_graph
- رسم بياني مرجح موجه: https://en.wikipedia.org/wiki/graph_(discrete_mathematics)#weighted_graph
- البحث الأول عن العمق: https://en.wikipedia.org/wiki/Depth-First_Search
- اتساع أول بحث: https://en.wikipedia.org/wiki/breadth-first_search
- المكونات المتصلة غير الموجهة: https://en.wikipedia.org/wiki/component_(graph_theory)
- اكتشاف الدورة غير الموجود: https://en.wikipedia.org/wiki/cycle_(graph_theory)
- اكتشاف الدورة الموجه: https://en.wikipedia.org/wiki/cycle_(graph_theory)
- الكشف عن الحزبين: https://en.wikipedia.org/wiki/Bipartite_graph
- الترتيب الطوبولوجي: https://en.wikipedia.org/wiki/topological_sorting
- مكونات متصلة بقوة (خوارزمية كوساراجو): https://en.wikipedia.org/wiki/Kosaraju٪27S_Algorithm
- خوارزمية بريم (كسول): https://en.wikipedia.org/wiki/prim٪27s_algorithm
- خوارزمية Kruskal: https://en.wikipedia.org/wiki/Kruskal٪27S_Algorithm
- أقصر مسار Dijkstra: https://en.wikipedia.org/wiki/Dijkstra٪27S_Algorithm
- أقصر مسار الأعماق الطوبولوجية: https://en.wikipedia.org/wiki/topological_sorting#application_to_shortest_path_finding
- بيلمان فورد أقصر مسار: https://en.wikipedia.org/wiki/bellman٪E2٪80٪93Ford_Algorithm
الاستخدام
يتم اختبار جميع المكونات. ومع ذلك ، لا يتم اختبارها وفقًا لمعايير الإنتاج الصارمة. تحتوي هياكل البيانات مثل القائمة المرتبطة والرموز على واجهات مثل قائمة Python القياسية والقاموس.