Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาว่ากราฟที่ไม่มีทิศทางมีชุดขนาดที่กำหนดใน Python . หรือไม่


สมมติว่าเรามีกราฟที่ไม่ได้บอกทิศทาง เราต้องตรวจสอบว่ามีชุดขนาด l อิสระหรือไม่ หากมีชุดขนาดอิสระใด ๆ ให้ส่งคืนใช่มิฉะนั้นไม่ใช่

เราต้องจำไว้ว่าชุดอิสระในกราฟถูกกำหนดให้เป็นชุดของจุดยอดซึ่งไม่ได้เชื่อมต่อกันโดยตรง

ดังนั้น หากอินพุตเป็น L =4

ค้นหาว่ากราฟที่ไม่มีทิศทางมีชุดขนาดที่กำหนดใน Python . หรือไม่

แล้วผลลัพธ์จะเป็นใช่

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดฟังก์ชัน is_valid() นี่จะเป็นกราฟ arr

  • สำหรับฉันในช่วง 0 ถึงขนาดของ arr ทำ

    • สำหรับ j ในช่วง i + 1 ถึงขนาดของ arr ทำ

      • ถ้า graph[arr[i], arr[j]] เหมือนกับ 1 แล้ว

        • คืนค่าเท็จ

  • คืนค่า True

  • กำหนดฟังก์ชัน Solve() จะได้กราฟ arr k ดัชนี โซล

  • ถ้า k เท่ากับ 0 แล้ว

    • ถ้า is_valid(graph, arr) เหมือนกับ True แล้ว

      • sol[0] :=จริง

      • กลับ

    • มิฉะนั้น

      • ถ้าดัชนี>=k แล้ว

        • return(แก้(กราฟ, arr[จากดัชนี 0 ถึงสิ้นสุด] เชื่อมรายการด้วย [ดัชนี], k-1, ดัชนี-1, โซล) หรือแก้(กราฟ, arr[จากดัชนี 0 ถึงจุดสิ้นสุด], k, ดัชนี- 1 โซล))

      • มิฉะนั้น

        • return Solve(กราฟ, arr[จากดัชนี 0 ถึงปลาย] เชื่อมรายการด้วย [ดัชนี], k-1, ดัชนี-1, โซล)

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def is_valid(graph, arr):
   for i in range(len(arr)):
      for j in range(i + 1, len(arr)):
         if graph[arr[i]][arr[j]] == 1:
            return False
   return True
def solve(graph, arr, k, index, sol):
   if k == 0:
      if is_valid(graph, arr) == True:
         sol[0] = True
         return
      else:
         if index >= k:
            return (solve(graph, arr[:] + [index], k-1, index-1, sol) or solve(graph, arr[:], k, index-1, sol))
         else:
            return solve(graph, arr[:] + [index], k-1, index-1, sol)

graph = [
   [1, 1, 0, 0, 0],
   [1, 1, 1, 1, 1],
   [0, 1, 1, 0, 0],
   [0, 1, 0, 1, 0],
   [0, 1, 0, 0, 1]]
k = 4
arr = []
sol = [False]
solve(graph, arr[:], k, len(graph)-1, sol)
if sol[0]:
   print("Yes")
else:
   print("No")

อินพุต

[[1, 1, 0, 0, 0],
[1, 1, 1, 1, 1],
[0, 1, 1, 0, 0],
[0, 1, 0, 1, 0],
[0, 1, 0, 0, 1]],
4

ผลลัพธ์

Yes