ผลต่างระหว่างรุ่นของ "Sgt/eigen1"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
(ทำ subsection)
(เพิ่ม complete graph)
แถว 52: แถว 52:
 
ทดลองใส่กราฟในรูปแบบต่าง ๆ เช่น tree, cycle, complete graphs, grids เป็นต้น แล้ววาดโดยใช้ eigenvector ที่สองและสาม
 
ทดลองใส่กราฟในรูปแบบต่าง ๆ เช่น tree, cycle, complete graphs, grids เป็นต้น แล้ววาดโดยใช้ eigenvector ที่สองและสาม
  
=== Bipartite graph ===
+
<gallery class="center" widths="320px" heights="240px">
  
Bipartite graph ขนาด 20 nodes แบ่งเป็น A,B ข้างละ 10 nodes โดยที่ node ใดๆในฝั่ง A เชื่อมไปยังทุก node ในฝั่ง B
+
  ไฟล์:Sgt_lab1_k11.png | Complete graph ขนาด 11 โหนด
  
[[ไฟล์:Sgt lab1 bipartite.png|500x500px]]
+
  ไฟล์:Sgt_lab1_bipartite.png | Bipartite graph ขนาด 20 nodes แบ่งเป็น A,B ข้างละ 10 nodes โดยที่ node ใดๆในฝั่ง A เชื่อมไปยังทุก node ในฝั่ง B
 +
 
 +
</gallery>
  
 
== การทดลอง Graph Partitioning ==
 
== การทดลอง Graph Partitioning ==
 
=== Synthetic data ===
 
=== Synthetic data ===
 
=== Image data ===
 
=== Image data ===

รุ่นแก้ไขเมื่อ 19:08, 1 กุมภาพันธ์ 2558

โค้ดตัวอย่าง

  • โค้ดตัวอย่างอยู่ที่ github
  • Modules:
    • mat.py: สร้าง adjacency matrix และ degree matrix
    • generators.py: สร้าง adjacency list ของ line และ random graph แบบสอง cluster
    • grpplot.py ส่วนของการ plot
    • main.py: โปรแกรมหลัก

ฟังก์ชัน grpplot.plot

ฟังก์ชัน grpplot.plot(n, adjmat, px, py) จะวาดกราฟ n โหนด ตาม adjacency matrix adjmat โดยใช้พิกัดจาก px และ py

การปรับแก้การแสดงผล:

โปรแกรมหลัก main.py พร้อมคำอธิบาย

def main():
    # สร้าง adjacency list ของกราฟ
    n = 100
    #adjlist = gen_line(n)
    adjlist = gen_random(n,500)

    # สร้าง laplacian ของกราฟ
    a = adjmat(n,adjlist)
    d = degmat(n,adjlist)
    la = d - a

    # คำนวณ eigenvectors, eigenvalues แต่ผลจาก eig ไม่เรียง เลยจับมาเรียงเองด้วย sort_eig
    w,v = eig(la)
    w,v = sort_eig(w,v,n)
    print w

    # eigenvectors ของ $\lambda_2$ และ $\lambda_3$
    e2 = v[1]
    e3 = v[2]

    # แกน x เอามาจาก eigenvectors, แกน y สุ่ม
    px = [e2[i,0] for i in range(n)]
    py = [random() for i in range(n)]

    plot(n,a,px,py)
    raw_input()

การทดลอง Graph drawing

ทดลองใส่กราฟในรูปแบบต่าง ๆ เช่น tree, cycle, complete graphs, grids เป็นต้น แล้ววาดโดยใช้ eigenvector ที่สองและสาม

การทดลอง Graph Partitioning

Synthetic data

Image data