คำถามติดแท็ก asymptotics

คำถามเกี่ยวกับสัญลักษณ์และการวิเคราะห์เชิงเส้นกำกับ

3
เราจะรู้ได้อย่างไรว่าจะใช้การวิเคราะห์ความซับซ้อนของเวลาแบบใด
ในชั้นเรียนอัลกอริทึมเบื้องต้นส่วนใหญ่จะมีการแนะนำสัญลักษณ์เช่น (Big O) และและนักเรียนมักจะเรียนรู้ที่จะใช้สิ่งเหล่านี้เพื่อค้นหาความซับซ้อนของเวลาΘOOOΘΘ\Theta แต่มีสัญลักษณ์อื่น ๆ เช่น ,และ\มีสถานการณ์เฉพาะใดบ้างที่จะให้สัญกรณ์หนึ่งเป็นที่นิยมมากกว่าอีกรูปแบบหนึ่ง?โอห์มโอห์มโอooΩΩ\Omegaωω\omega

11
การแก้ไขหรือการประมาณความสัมพันธ์ที่เกิดซ้ำสำหรับลำดับของตัวเลข
ในวิทยาการคอมพิวเตอร์เรามักจะต้องแก้ปัญหาความสัมพันธ์ซ้ำซึ่งเป็นรูปแบบปิดสำหรับลำดับตัวเลขที่กำหนดซ้ำ เมื่อพิจารณาจากเวลาการทำงานเรามักจะให้ความสนใจส่วนใหญ่อยู่ในลำดับที่asymptoticการเจริญเติบโต ตัวอย่างคือ รันไทม์ของฟังก์ชั่น tail-recursive ลดลงเหลือจากซึ่งร่างกายใช้เวลา :000nnnf(n)f(n)f(n) T(0)T(n+1)=0=T(n)+f(n)T(0)=0T(n+1)=T(n)+f(n)\qquad \begin{align} T(0) &= 0 \\ T(n+1) &= T(n) + f(n) \end{align} ลำดับฟีโบนักชี : F0F1Fn+2=0=1=Fn+Fn+1F0=0F1=1Fn+2=Fn+Fn+1\qquad \begin{align} F_0 &= 0 \\ F_1 &= 1 \\ F_{n+2} &= F_n + F_{n+1} \end{align} จำนวนคำ Dyckกับคู่วงเล็บ:nnn C0Cn+1=1=∑i=0nCiCn−iC0=1Cn+1=∑i=0nCiCn−i\qquad\begin{align} C_0 &= 1 \\ C_{n+1}&=\sum_{i=0}^{n}C_i\,C_{n-i} \end{align} การเกิดซ้ำรันไทม์การผสานบนรายการความยาว :nnn T(1)T(n)=T(0)=0=T(⌊n/2⌋)+T(⌈n/2⌉)+n−1T(1)=T(0)=0T(n)=T(⌊n/2⌋)+T(⌈n/2⌉)+n−1\qquad \begin{align} …

9
มีปัญหาใดที่จะง่ายขึ้นเมื่อพวกเขาเพิ่มขนาดหรือไม่
นี่อาจเป็นคำถามที่ไร้สาระ แต่เป็นไปได้ไหมที่จะมีปัญหาที่ง่ายขึ้นเมื่ออินพุตมีขนาดโตขึ้น? ฉันสงสัยว่าปัญหาในทางปฏิบัติเป็นเช่นนี้ แต่บางทีเราสามารถคิดค้นปัญหาที่เลวร้ายที่มีคุณสมบัตินี้ได้ ตัวอย่างเช่นบางทีมันอาจเริ่ม "แก้ปัญหาเอง" เมื่อมันใหญ่ขึ้นหรือทำงานในลักษณะแปลกประหลาดอื่น ๆ

5
อัลกอริทึมการเรียงลำดับนี้เป็นอย่างไร³ (n³) และไม่Θ (n²) เป็นกรณีที่เลวร้ายที่สุด?
ฉันเพิ่งเริ่มเรียนหลักสูตรโครงสร้างข้อมูลและอัลกอริธึมและผู้ช่วยสอนของฉันให้รหัสหลอกต่อไปนี้สำหรับการเรียงลำดับอาร์เรย์ของจำนวนเต็ม: void F3() { for (int i = 1; i < n; i++) { if (A[i-1] > A[i]) { swap(i-1, i) i = 0 } } } อาจไม่ชัดเจน แต่ที่นี่คือขนาดของอาร์เรย์ที่เราพยายามเรียงลำดับnnnA ในกรณีใด ๆ ผู้ช่วยสอนอธิบายให้ชั้นเรียนรู้ว่าอัลกอริทึมนี้อยู่ในเวลา (แย่ที่สุดฉันเชื่อ) แต่ไม่ว่าฉันจะผ่านมันไปกี่ครั้งด้วยอาเรย์เรียงกลับด้าน มันดูเหมือนว่าฉันที่มันควรจะเป็นและไม่ได้3)Θ(n3)Θ(n3)\Theta(n^3)Θ(n2)Θ(n2)\Theta(n^2)Θ(n3)Θ(n3)\Theta(n^3) คนที่จะสามารถอธิบายให้ฉันทำไมนี้เป็นΘ(n3)Θ(n3)Θ(n^3)และไม่Θ(n2)Θ(n2)Θ(n^2) ?

2
ความหมายของคืออะไร?
นี่เป็นคำถามพื้นฐาน แต่ฉันคิดว่าเหมือนกับเนื่องจากคำที่ใหญ่กว่าควรมีอิทธิพลเหนือเราไปไม่สิ้นสุด? นอกจากนี้ที่จะแตกต่างจากO (\ นาที (m, n)) นั่นถูกต้องใช่ไหม? ฉันเห็นสัญกรณ์นี้โดยเฉพาะเมื่อพูดถึงอัลกอริธึมกราฟ ตัวอย่างเช่นคุณจะเห็นเป็นประจำ: O (| V | + | E |) (เช่นดูที่นี่ )O(m+n)O(m+n)O(m+n)O(max(m,n))O(max(m,n))O(\max(m,n))O(min(m,n))O(min(m,n))O(\min(m,n))O(|V|+|E|)O(|V|+|E|)O(|V| + |E|)

4
คลาสของฟังก์ชันที่อธิบายโดย O (n log n) คืออะไร?
ใน "บิ๊กโอ" สัญลักษณ์ทั่วไปมีชื่อสามัญ (แทนที่จะพูดว่า "โอ้ปัจจัยคงที่"): O (1)คือ "คงที่" O (บันทึก n)คือ "ลอการิทึม" O (n)คือ "เชิงเส้น" O (n ^ 2)คือ "กำลังสอง" O (n * log n)คือ ??? มันเป็นแค่ "n log n" หรือมีชื่อพิเศษเหมือนด้านบนหรือไม่?

6
ฟังก์ชั่นการเรียงลำดับตามการเติบโตของซีมโทติค
สมมติว่าฉันมีรายการฟังก์ชั่นเช่น nloglog(n),2n,n!,n3,nlnn,…nlog⁡log⁡(n),2n,n!,n3,nln⁡n,…\qquad n^{\log \log(n)}, 2^n, n!, n^3, n \ln n, \dots ฉันจะจัดเรียงพวกเขาแบบไม่แสดงอาการได้อย่างไรเช่นหลังจากความสัมพันธ์ที่กำหนดโดย f≤Og⟺f∈O(g)f≤Og⟺f∈O(g)\qquad f \leq_O g \iff f \in O(g) , สมมติว่าพวกเขาเป็นคู่เปรียบเทียบจริง ๆ (ดูที่นี่ )? การใช้ความหมายของOOOดูเหมือนว่าอึดอัดและก็มักจะเป็นเรื่องยากที่จะพิสูจน์ได้ว่าการดำรงอยู่ของค่าคงที่ที่เหมาะสมcccและn0n0n_0 0 นี่เป็นเรื่องเกี่ยวกับการวัดความซับซ้อนดังนั้นเราจึงสนใจพฤติกรรมแบบอะซิมโทติคในรูปแบบn→+∞n→+∞n \to +\inftyและเราคิดว่าฟังก์ชั่นทั้งหมดใช้เฉพาะค่าที่ไม่เป็นลบ ( ∀n,f(n)≥0∀n,f(n)≥0\forall n, f(n) \ge 0 )

2
asymptotically shuffling ไร้เดียงสาแค่ไหน?
เป็นที่ทราบกันดีว่าอัลกอริทึม 'ไร้เดียงสา' สำหรับการสับเปลี่ยนอาเรย์โดยการสลับแต่ละไอเท็มกับอีกอันที่สุ่มเลือกไม่ทำงานอย่างถูกต้อง: for (i=0..n-1) swap(A[i], A[random(n)]); โดยเฉพาะตั้งแต่ที่แต่ละnnnซ้ำหนึ่งของnnnเลือกที่จะทำ (กับความน่าจะเป็นชุด) มีn nnnn^nที่เป็นไปได้ 'เส้นทาง' ผ่านการคำนวณ; เพราะจำนวนการเรียงสับเปลี่ยนที่เป็นไปได้n ! n!n!ไม่แบ่งเท่า ๆ กันตามจำนวนของเส้นทางn nnnn^nมันเป็นไปไม่ได้ที่อัลกอริธึมนี้จะสร้างnแต่ละอัน! n!n!การเรียงสับเปลี่ยนที่มีความน่าจะเป็นเท่ากัน (แต่อย่างใดอย่างหนึ่งควรใช้การสลับแบบFischer-Yatesซึ่งจะเปลี่ยนการโทรเพื่อเลือกหมายเลขสุ่มจาก [0..n) ด้วยการโทรเพื่อเลือกหมายเลขแบบสุ่มจาก [i..n); เป็นสิ่งที่สงสัยกับคำถามของฉัน) สิ่งที่ฉันสงสัยคือการสับเปลี่ยนไร้เดียงสาจะเป็นไปได้อย่างไร โดยเฉพาะอย่างยิ่งการให้P ( n )P(n)P(n)เป็นชุดของพีชคณิตทั้งหมดและC ( ρ )C(ρ)C(\rho)เป็นจำนวนเส้นทางผ่านขั้นตอนวิธีการที่ไร้เดียงสาที่ผลิตที่เกิดการเปลี่ยนแปลงρ ∈ P ( n )ρ∈P(n)\rho\in P(n)สิ่งที่เป็นพฤติกรรมเชิงของการทำงาน M(n)=n!nnmaxρ∈P(n)C(ρ)M(n)=n!nnmaxρ∈P(n)C(ρ)\qquad \displaystyle M(n) = \frac{n!}{n^n}\max_{\rho\in P(n)} C(\rho) และ m(n)=n!nnminρ∈P(n)C(ρ)m(n)=n!nnminρ∈P(n)C(ρ)\qquad \displaystyle m(n) …

4
O และΩเกี่ยวข้องกับกรณีที่เลวร้ายที่สุดและดีที่สุดได้อย่างไร?
วันนี้เรามีการหารือในการบรรยายขั้นตอนวิธีการที่ง่ายมากสำหรับการหาองค์ประกอบในอาร์เรย์ที่เรียงลำดับการใช้ค้นหาแบบทวิภาค เราถูกขอให้ระบุความซับซ้อนเชิงซีมของมันสำหรับอาร์เรย์ขององค์ประกอบnnn ความคิดของฉันคือว่าไม่ชัดแจ้งO(logn)O(log⁡n)O(\log n)หรือO(log2n)O(log2⁡n)O(\log_2 n)มีความเฉพาะเจาะจงมากขึ้นเนื่องจากlog2nlog2⁡n\log_2 nเป็นจำนวนการดำเนินการในกรณีที่เลวร้ายที่สุด แต่ผมสามารถทำได้ดีกว่ายกตัวอย่างเช่นถ้าผมตีสืบค้นองค์ประกอบเป็นครั้งแรก - แล้วขอบเขตที่ต่ำเป็นΩ ( 1 )Ω(1)\Omega(1) ) ผู้บรรยายเสนอวิธีแก้ปัญหาเป็นΘ ( บันทึกn )Θ(log⁡n)\Theta(\log n)เนื่องจากเรามักจะพิจารณาเฉพาะกรณีที่แย่ที่สุดสำหรับอัลกอริทึม แต่เมื่อพิจารณาเฉพาะกรณีที่เลวร้ายที่สุดประเด็นของการมีOOOและคืออะไรΩΩ\Omegaเมื่อกรณีที่เลวร้ายที่สุดของปัญหาที่กำหนดมีความซับซ้อนเดียวกัน ( ΘΘ\Thetaจะเป็นสิ่งที่เราต้องการใช่ไหม?) สิ่งที่ฉันหายไปที่นี่?

2
เหตุใด C ประเภทโมฆะจึงไม่คล้ายกับประเภทที่ว่าง / ด้านล่าง
Wikipedia ตลอดจนแหล่งข้อมูลอื่น ๆ ที่ฉันได้พบรายการvoidประเภทC เป็นหน่วยประเภทซึ่งตรงข้ามกับประเภทที่ว่างเปล่า ฉันพบว่ามันสับสนเพราะฉันคิดว่าvoidเหมาะกับนิยามของประเภทที่ว่าง / ล่าง ไม่มีค่านิยมใด ๆ อยู่voidเท่าที่ฉันจะบอกได้ ฟังก์ชั่นที่มีประเภทคืนค่าเป็นโมฆะระบุว่าฟังก์ชั่นจะไม่ส่งคืนสิ่งใดดังนั้นจึงสามารถทำงานได้เพียงผลข้างเคียงเท่านั้น ตัวชี้ชนิดvoid*เป็นชนิดย่อยของชนิดตัวชี้อื่นทั้งหมด นอกจากนี้การแปลงไปยังและจากvoid*ใน C นั้นเป็นนัย ผมไม่แน่ใจว่าถ้าจุดสุดท้ายมีบุญใด ๆ ที่เป็นข้อโต้แย้งสำหรับvoidการเป็นประเภทที่ว่างเปล่าเป็นมากหรือน้อยเป็นกรณีพิเศษที่มีความสัมพันธ์ไม่มากที่จะvoid*void ในทางกลับกันvoidตัวมันเองไม่ใช่ประเภทย่อยของประเภทอื่นทั้งหมดซึ่งเท่าที่ฉันสามารถบอกได้ว่าเป็นข้อกำหนดสำหรับประเภทที่จะเป็นประเภทด้านล่าง
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

1
Asymptotics ของจำนวนคำในภาษาปกติของความยาวที่กำหนด
สำหรับภาษาปกติLLLให้cn(L)cn(L)c_n(L)เป็นจำนวนคำในLLLความยาวnnnnใช้จอร์แดนรูปแบบที่ยอมรับ (นำไปใช้กับเมทริกซ์การเปลี่ยนแปลง unannotated ของ DFA บางอย่างสำหรับLLL ) หนึ่งสามารถแสดงให้เห็นว่าใหญ่พอnnn , cn(L)=∑i=1kPi(n)λni,cn(L)=∑i=1kPi(n)λin, c_n(L) = \sum_{i=1}^k P_i(n) \lambda_i^n, ที่มี ชื่อพหุนามแบบซับซ้อนและPiPiP_iλiλi\lambda_i"ค่าลักษณะเฉพาะ" ที่ซับซ้อน (สำหรับขนาดเล็กเราอาจมีข้อกำหนดเพิ่มเติมของแบบฟอร์มโดยที่คือถ้าและอย่างอื่นสิ่งเหล่านี้สอดคล้องกับบล็อกของจอร์แดนที่มีขนาดอย่างน้อยมีค่าลักษณะเฉพาะ )nnnCk[n=k]Ck[n=k]C_k[n=k][n=k][n=k][n=k]111n=kn=kn=k000k+1k+1k+1000 การแสดงนี้ดูเหมือนจะบ่งบอกว่าถ้าเป็นอนันต์แล้ว asymptotically,สำหรับบาง 0 อย่างไรก็ตามนี่เป็นความเท็จอย่างชัดแจ้ง: สำหรับภาษามากกว่าของทุกคำที่มีความยาวเท่ากันแต่ . นี้แสดงให้เห็นว่าบางและสำหรับทั้งหมดทั้งสำหรับขนาดใหญ่พอหรือA} นี่คือการพิสูจน์ในFlajolet & SedgewickLLLcn(L)∼Cnkλncn(L)∼Cnkλnc_n(L) \sim C n^k \lambda^nC,λ>0C,λ>0C,\lambda>0LLL{0,1}{0,1}\{0,1\}c2n(L)=22nc2n(L)=22nc_{2n}(L) = 2^{2n}c2n+1(L)=0c2n+1(L)=0c_{2n+1}(L) = 0ddda∈{0,…,d−1}a∈{0,…,d−1}a \in \{0,\ldots,d-1\}cdm+a(L)=0cdm+a(L)=0c_{dm+a}(L) = 0mmmcdm+a∼Ca(dm+a)kaλdm+aacdm+a∼Ca(dm+a)kaλadm+ac_{dm+a} \sim C_a (dm+a)^{k_a} \lambda_a^{dm+a} (ทฤษฎีบท V.3) ซึ่งเป็นผู้พิสูจน์ข้อพิสูจน์ของ Berstel …

10
“ สำหรับค่าเล็ก ๆ ของ n, O (n) สามารถถือว่าเหมือนกับ O (1)”
ฉันเคยได้ยินมาหลายครั้งแล้วว่าสำหรับค่าที่น้อยมากของ n, O (n) สามารถคิดเกี่ยวกับ / ถือว่าราวกับว่ามันเป็น O (1) ตัวอย่าง : แรงจูงใจในการทำเช่นนั้นขึ้นอยู่กับความคิดที่ไม่ถูกต้องที่ O (1) ดีกว่า O (lg n) เสมอดีกว่า O (n) ลำดับของการดำเนินการแบบซีมโทติคนั้นเกี่ยวข้องเฉพาะในกรณีที่ขนาดจริงของปัญหาใหญ่มาก ถ้า n ยังเล็กอยู่ทุกปัญหาคือ O (1)! มีขนาดเล็กพอเพียงคืออะไร 10? 100? 1,000? คุณพูดว่า "เราไม่สามารถปฏิบัติเช่นนี้กับการดำเนินการฟรีอีกต่อไป" มีกฎง่ายๆไหม? ดูเหมือนว่าจะเป็นโดเมนหรือกรณีเฉพาะ แต่มีกฎทั่วไปเกี่ยวกับวิธีคิดเกี่ยวกับเรื่องนี้หรือไม่?

2
โครงสร้างข้อมูลพร้อมการค้นหาแทรกและลบในเวลาตัดจำหน่าย
มีโครงสร้างข้อมูลเพื่อรักษารายการที่สั่งซื้อซึ่งสนับสนุนการดำเนินการต่อไปนี้ในเวลาตัดจำหน่ายหรือไม่O ( 1 )O(1)O(1) GetElement (k) : ส่งคืนองค์ประกอบที่ของรายการkkk InsertAfter (x, y) : ใส่องค์ประกอบใหม่ y ลงในรายการทันทีหลังจาก x ลบ (x) : ลบ x ออกจากรายการ สำหรับการดำเนินการสองครั้งล่าสุดคุณสามารถสมมติได้ว่า x ถูกกำหนดให้เป็นตัวชี้ไปยังโครงสร้างข้อมูลโดยตรง InsertElement ส่งคืนตัวชี้ที่สอดคล้องกันสำหรับ y InsertAfter (NULL, y) แทรก y ที่จุดเริ่มต้นของรายการ ตัวอย่างเช่นเริ่มต้นด้วยโครงสร้างข้อมูลที่ว่างเปล่าการดำเนินการต่อไปนี้จะอัพเดตรายการที่สั่งซื้อตามที่แสดงด้านล่าง: InsertAfter (NULL, a) [a]⟹⟹\implies InsertAfter (NULL, b) [b, a]⟹⟹\implies InsertAfter (b, c) [b, c, a]⟹⟹\implies …

5
O (mn) ถือว่าการเติบโตแบบ "เชิงเส้น" หรือ "กำลังสอง" หรือไม่?
ถ้าฉันมีฟังก์ชั่นบางตัวที่ความซับซ้อนของเวลาคือ O ( mn ) โดยที่mและnเป็นขนาดของอินพุตทั้งสองเราจะเรียกความซับซ้อนของเวลาว่า "เป็นเส้นตรง" (เนื่องจากเป็นเชิงเส้นทั้งในmและn ) หรือ "กำลังสอง" ( เนื่องจากเป็นผลิตภัณฑ์ที่มีสองขนาด) หรืออย่างอื่น? ฉันรู้สึกว่าเรียกว่า "เป็นเส้นตรง" ทำให้สับสนเพราะ O (m + n) เป็นเส้นตรง แต่เร็วกว่ามาก แต่ฉันรู้สึกว่าเรียกมันว่า "กำลังสอง" นั้นก็แปลกเพราะมันเป็นเส้นตรงในตัวแปรแต่ละตัว

4
วิธีการที่จะหลอกการตรวจสอบพล็อตการเรียนรู้?
กว่าที่นี่เดฟคล๊าร์คเสนอว่าในการสั่งซื้อเพื่อเปรียบเทียบการเจริญเติบโต asymptotic พล็อตที่คุณควรฟังก์ชั่นที่อยู่ในมือ ในฐานะที่เป็นนักวิทยาศาสตร์คอมพิวเตอร์ที่มีความโน้มเอียงทางทฤษฎีฉันเรียก (v) vodoo นี้ว่าพล็อตไม่สามารถพิสูจน์ได้ ในความคิดที่สองฉันต้องยอมรับว่านี่เป็นวิธีที่มีประโยชน์มากซึ่งบางครั้งก็ใช้น้อยเกินไป พล็อตเป็นวิธีที่มีประสิทธิภาพในการรับแนวคิดแรกและบางครั้งก็เป็นสิ่งที่คุณต้องการ เมื่อสอน TCS มักจะมีนักเรียนที่ถามว่า: "ฉันต้องมีหลักฐานอะไรบ้างถ้าฉันสามารถทำ X ซึ่งใช้งานได้ตลอด?" มันขึ้นอยู่กับครูของเขาเพื่อชี้ให้เห็นและแสดงให้เห็นถึงการเข้าใจผิด มีตัวอย่างที่ยอดเยี่ยมของรูปแบบที่ปรากฏชัดเจนซึ่งในที่สุดก็ล้มเหลวที่ math.SE แต่สิ่งเหล่านี้เป็นสถานการณ์ทางคณิตศาสตร์ที่ค่อนข้างยุติธรรม ดังนั้นคุณจะหลอกการวิเคราะห์การตรวจสอบพล็อตได้อย่างไร มีบางกรณีที่ความแตกต่างยากที่จะบอก appart เช่น [ แหล่งที่มา ] คาดเดาจากนั้นตรวจสอบแหล่งที่มาสำหรับฟังก์ชั่นจริง แต่สิ่งเหล่านี้ไม่น่าตื่นเต้นอย่างที่ฉันคาดหวังโดยเฉพาะอย่างยิ่งเพราะความสัมพันธ์ที่แท้จริงนั้นง่ายต่อการสังเกตจากฟังก์ชั่นเพียงอย่างเดียวแม้แต่สำหรับมือใหม่ มีตัวอย่างของการเติบโตแบบเชิงสัมพัทธ์ (สัมพัทธ์) ที่ความจริงไม่ชัดเจนจากฟังก์ชั่นการกำหนดและการตรวจสอบพล็อตสำหรับขนาดใหญ่พอสมควรnnnให้ความคิดที่ผิดอย่างสมบูรณ์หรือไม่? ฟังก์ชั่นทางคณิตศาสตร์และชุดข้อมูลจริง (เช่นรันไทม์ของอัลกอริทึมเฉพาะ) ยินดีต้อนรับทั้งคู่; โปรดหลีกเลี่ยงการใช้ฟังก์ชั่นที่กำหนดเป็นชิ้น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.