**ลำดับพรือเฟอร์** (อังกฤษ: Prüfer sequence, Prüfer code หรือ Prüfer numbers) เป็นหนึ่งในสาขาคณิตศาสตร์เชิงการจัด, ลำดับพรือเฟอร์ ของต้นไม้ คือลำดับการเข้าร่วมกับต้นไม้ ลำดับพรือเฟอร์ สำหรับต้นไม้ที่มี n จุดยอด จะมีขนาด n-2 ตัว เสมอ และสามารถสร้างต้นไม้ได้โดยใช้ขั้นตอนวิธีที่จะกล่าวในส่วนต่อไป ลำดับพรือเฟอร์ ถูกใช้ครั้งแรกสำหรับการพิสูจน์ Cayley's formula โดยไฮนซ์ พรือเฟอร์ (Heinz Prüfer) ใน ค.ศ. 1918

นิยาม
-----

ลำดับพรือเฟอร์ n ลำดับ คือลำดับของเลขจำนวนเต็ม (integers) :  
  

```
( a1,a2,…,an−2)   
  

ดังนั้น ∀i : 1 ≤ i ≤ n−2 : 1 ≤ ai ≤n  
  

ซึ่งจะเป็นลำดับที่มีขนาด n−2 ตัวและมีค่าระหว่าง 1 ถึง n  
  

แนวคิดนี้กำหนดไว้เพื่อจุดประสงค์ในการพิสูจน์ Cayley's formula
```

ขั้นตอนวิธีที่ใช้ในการแปลงต้นไม้ไปเป็นลำดับพรือเฟอร์
----------------------------------------------------

กำหนด ต้นไม้ T ซึ่งสามารถนำมาสร้าง ลำดับพรือเฟอร์ ที่สามารถใช้แทนกันได้  
  

ต้นไม้ T มี n จุดยอด ซึ่งแต่ละจุดยอดจะมีค่า 1 ถึง n ไม่ซ้ำกันในแต่ละจุดยอด

1. ถ้าต้นไม้ T มีจุดยอดทั้งหมดน้อยกว่าหรือเท่ากับ 2 ( n ≤ 2 ) จะหยุดการทำงาน ,ถ้าไม่ใช่ ทำขึ้นตอนที่ 2
2. เลือกใบของต้นไม้ที่มีค่าต่ำที่สุด
3. นำค่าจากใบที่ติดกับใบที่เราเลือกใส่ลงใน ลำดับพรือเฟอร์
4. ลบใบที่เราเลือกออกจากต้นไม้ แล้ววนกลับไปทำขั้นตอนที่ 1 ใหม่

  

* ความจำกัด (อังกฤษ: Finiteness) : ทุกครั้งที่ผ่านขั้นตอนที่ 4 จุดยอดจะหายไป 1 จุดเสมอ เมื่อผ่านไป n-2 รอบ จะเหลือจุดยอดเพียง 2 จุด ขั้นตอนวิธีก็จะหยุดทำงาน
* ข้อมูลนำเข้า (อังกฤษ: Inputs) : ต้นไม้ T
* ข้อมูลนำออก (อังกฤษ: Outputs) : ลำดับพรือเฟอร์ ซึ่งมีขนาด n-2 ตัว

ขั้นตอนวิธีที่ใช้ในการแปลงลำดับพรือเฟอร์ไปเป็นต้นไม้
----------------------------------------------------

### Pseudocode

กำหนด ลำดับพรือเฟอร์ ขนาด n ตัว {a[1], a[2], ... a[n]} จะแปลงได้ต้นไม้ที่มีจุดยอด n+2 จุด

```
 **Convert-Prüfer-to-Tree** (*a*)
 1 *n* ← *length*[*a*]
 2 *T* ← a graph with *n* + 2 isolated nodes, numbered 1 **to** *n* + 2
 3 *degree* ← an array of integers
 4 **for** each node *i* in *T*
 5     **do** *degree*[*i*] ← 1
 6 **for** each value *i* in *a*
 7     **do** *degree*[*i*] ← *degree*[*i*] + 1
```

ทำการสร้างเส้นเชื่อม (edge) ระหว่างจุดยอดโดยเลือกจากใบที่อยู่ล่างสุดของ tree

```
 8 **for** each value *i* in *a*
 9     **for** each node *j* in *T*
10         **if** *degree*[*j*] = 1
11             **then** Insert *edge*[*i*, *j*] into *T*
12                  *degree*[*i*] ← *degree*[*i*] - 1
13                  *degree*[*j*] ← *degree*[*j*] - 1
14                  **break**
```

ทำการสร้างเส้นเชื่อม (edge) กับจุดยอดที่เหลืออันสุดท้ายเข้ากับต้นไม้

```
15 *u* ← *v* ← 0
16 **for** each node *i* in *T*
17     **if** *degree*[*i*] = 1
18         **then** **if** *u* = 0
19             **then** *u* ← *i*
20             **else** *v* ← *i*
21                  **break**
22 Insert *edge*[*u*, *v*] into *T*
22 *degree*[*u*] ← *degree*[*u*] - 1
23 *degree*[*v*] ← *degree*[*v*] - 1
24 **return** *T*
```

Cayley's formula
----------------

ลำดับพรือเฟอร์ ของต้นไม้ที่มี n จุดยอดนั้น จะชัดเจนแล้วว่าลำดับพรือเฟอร์ จะมีขนาด n − 2 และค่าในแต่ละลำดับจะอยู่ระหว่าง 1 ถึง n แต่สิ่งที่ชัดเจนน้อยกว่าคือ ถ้าให้ลำดับพรือเฟอร์ ขนาด n-2 ช่อง และค่าในแต่ละลำดับจะอยู่ระหว่าง 1 ถึง n
จะมีต้นไม้ที่แปลงจาก ลำดับพรือเฟอร์ นั้นออกมาเป็นต้นไม้ได้ **ผลที่ได้ตามมา**ก็คือ ลำดับพรือเฟอร์ ให้ bijection ระหว่าง กลุ่มของต้นไม้ที่มี n จุดยอด กับ กลุ่มของลำดับพรือเฟอร์ ที่มีขนาด n-2 ตัว และค่าในแต่ละลำดับจะอยู่ระหว่าง 1 ถึง n ซึ่งในกลุ่มของลำดับพรือเฟอร์ มีขนาด nn-2 ดังนั้นการมี bijection นี้แสดงถึงการพิสูจน์ Cayley's formula เช่น จะมีต้นไม้ที่มี n จุดยอด nn-2 ต้น

ตัวอย่างการประยุกต์ใช้
----------------------

* Cayley's formula สามารถนำไปพิสูจน์เรื่องต่อไปนี้: จำนวน spanning tree ใน complete graph Kn ที่มีชั้น d1,d2,...dn จะเท่ากับ (n-2) !/ (d1-1) ! (d2-1) !... (dn-1) ! การพิสูจน์จะเห็นได้ว่าในลำดับพรือเฟอร์ ลำดับที่ i จะปรากฏตรงกับ (di − 1) ครั้ง
* Cayley's formula ทั่วไป : ต้นไม้ที่เป็น spanning tree ใน complete graph โดยจำกัดการนับ ลำดับพรือเฟอร์ ซึ่งวิธีการคล้ายกับการหาจำนวน spanning tree ของ complete bipartite graph ถ้ากราฟ G เป็น complete bipartite graph ที่มีจุดยอด 1 ถึง n1 ในส่วนแรก และ n1+1 ถึง n ในส่วนที่สอง แล้ว จำนวนของ spanning tree ของกราฟ G เท่ากับ n1n2-1n2n1-1 เมื่อ n=n1+n2

อื่นๆ
-----

* ตัวอย่าง ลำดับพรือเฟอร์ จาก ต้นไม้
* ตัวอย่าง ต้นไม้ จากลำดับพรือเฟอร์

อ้างอิง
-------

* ขั้นที่ใช้ในการแปลงต้นไม้ไปเป็นลำดับพรือเฟอร์
* bijection ระหว่างลำดับพรือเฟอร์กับต้นไม้
* นิยามของลำดับพรือเฟอร์
* Prüfer, H. (1918). "Neuer Beweis eines Satzes über Permutationen". Arch. Math. Phys. 27: 742–744.
* Jens Gottlieb, Bryant A. Julstrom, Günther R. Raidl, and Franz Rothlauf. (2001). "Prüfer numbers: A poor representation of spanning trees for evolutionary search" เก็บถาวร 2011-10-01 ที่ เวย์แบ็กแมชชีน. Proceedings of the Genetic and Evolutionary Computation Conference (GECCO-2001) : 343–350.