อัลกอริทึมคืออะไร?


12

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

หนึ่งใน "ตัวเลือก" ที่ฉันมีความเข้าใจคือว่ามันหมายถึงวิธีการทำบางสิ่งบางอย่างที่สามารถเขียนเป็นรายการในรหัสเทียม

เมื่อฉันเขียนโค้ดที่ซับซ้อนมากขึ้นฉันคิดว่าสิ่งที่ต้องทำคืออะไรและวิธีที่ฉันจะไปที่นั่น (ไม่ใช่ภาษาการเขียนโปรแกรม) จากนั้นเขียนเป็นโค้ด เป็นวิธีที่ดีที่จะไปเกี่ยวกับเรื่องนี้และเป็นสิ่งที่จะทำอย่างไรกับอัลกอริทึม?

(ฉันอยากถามที่นี่มากกว่าใน Stackoverflow เพราะมันไม่เกี่ยวกับปัญหา / ภาษาที่เฉพาะเจาะจงรวมทั้งฉันรู้สึกว่าคนส่วนใหญ่ที่นี่รู้ว่า 'ทำไม' หรืออย่างน้อยคำตอบที่นี่มีรายละเอียดมากกว่าใน Stackoverflow มันแตกต่างกันที่ไหนฉันขอโทษถ้าฉันควรจะถามที่นั่น)


5
Google? วิกิพีเดีย? google.com/search?q=algorithm
Maglob

1
@Apalala: ฉันไม่คิดว่ามีข้อ จำกัด เหล่านี้
Josh K

2
@Apalala: Finiteไม่รู้จักกัน
Josh K

2
@ Jonathan: "คำที่ฉันต้องค้นหา"? คำไหน? เป็นที่เฉพาะเจาะจง ไซต์นี้ไม่ใช่เวทย์มนตร์ เราไม่รู้จักคุณ เราไม่รู้ว่าคุณอ่านอะไร เราไม่รู้ว่าคุณสับสนอะไร โปรดเฉพาะ
S.Lott

1
@Apalala: "จำกัด " หมายถึง "จำกัด " ไม่มีอะไรเพิ่มเติม อัลกอริทึมรับประกันว่าจะหยุดบางครั้ง มันง่ายกว่ามากในการพิสูจน์ความละเอียดเมื่อคุณมีวิธีการทำนายที่จะสิ้นสุดดังนั้นอัลกอริทึมมักจะคาดเดาได้ แต่การคาดการณ์ไม่ได้อยู่ในคำนิยามของอัลกอริทึมปกติ
David Thornley

คำตอบ:


19

อัลกอริทึมเป็นลำดับที่ จำกัด ของคำแนะนำที่กำหนดไว้อย่างดีสำหรับการคำนวณฟังก์ชั่น (หรือดำเนินการตามขั้นตอน) ที่สิ้นสุดในสถานะสิ้นสุดที่กำหนดไว้อย่างดี


1
+1 "Finite, Well-Defined and Effective" เป็นเกณฑ์สามข้อในรายการ Wikipedia คุณมีทั้งสามที่นี่ด้วย
S.Lott

ฉันตั้งค่าให้ดูวิดีโอที่ยกมาโดย @ Jörg แต่มุมมองปัจจุบันของฉันคือไม่เพียง แต่จะต้องมีขั้นตอนที่ จำกัด เท่านั้น หากทรัพยากร (รวมทั้งเวลา) จะไม่ได้สิ้นสุดแล้วขั้นตอนสามารถเรียกได้หรือระบุว่าเป็นอะไร แต่ไม่ได้เป็นอัลกอริทึม
Apalala

@Apalala - ฉันกลับไปอ่านตำราเรียนแล้วและฉันไม่เห็นข้อ จำกัด ใด ๆ เป็นไปได้ว่าเป็นโดยเฉพาะอย่างยิ่งชุดข้อมูลหรือการป้อนขั้นตอนวิธีการอาจจะไม่ยุติ (ขั้นตอนวิธีเช่นวิธี Newton-Raphson สำหรับการหารากอาจได้รับการติดอยู่ในวงไม่มีที่สิ้นสุด) แต่นั่นไม่ได้ทำให้อัลกอริทึมไม่ได้เป็นอัลกอริทึม
John Bode

@John Oscillations สามารถตรวจจับได้เป็นประจำใน Newton-Raphson
Apalala

1
@Apalala: ฟังดูเหมือนคำจำกัดความของโปรแกรมมากกว่าอัลกอริทึม แนวคิดของขั้นตอนที่ไม่ต่อเนื่องนี้มีอยู่ในเครื่องทัวริงเครื่องลงทะเบียนเครื่องสุ่มเข้าถึงและแน่นอนในคอมพิวเตอร์ที่มีอยู่จริงของเราเช่นกันในภาษาการเขียนโปรแกรมทุกภาษาและแม้แต่ในทางแคลคูลัสแลมบ์ดา แต่นั่นเป็นข้อ จำกัด โดยพลการที่ไม่ได้มีอยู่ในอัลกอริทึม ยกตัวอย่างเช่นอัลกอริทึมแบบอะนาล็อกไม่มีขั้นตอนแบบแยกส่วน (อันที่จริงนั่นคือคำจำกัดความของอัลกอริธึมแบบอะนาล็อก) และสามารถนำไปใช้กับคอมพิวเตอร์อะนาล็อกได้
Jörg W Mittag

15

นี่เป็นคำถามที่น่าสนใจทีเดียวและอันที่จริงยังเป็นคำถามเปิดการวิจัย

Yuri Gurevich หนึ่งในยักษ์ใหญ่ของทฤษฎีอัลกอริทึมกำลังให้ซีรี่ส์วิดีโอบรรยายบนเว็บไซต์ชุมชนของ Microsoft Channel9:

อย่างที่คุณเห็นคำถามที่แท้จริงของคุณคือชื่อของการบรรยายที่สอง อย่างไรก็ตามฉันขอแนะนำให้คุณดูทั้งสามอย่าง

โดยเฉพาะอย่างยิ่งคนแรกมีตัวอย่างของอัลกอริธึมที่ทำให้คำจำกัดความทั้งหมดที่ให้ไว้ในคำตอบอื่น ๆ ส่วนใหญ่นั้นเป็นโมฆะ


2
ขอบคุณสำหรับลิงค์ คุณจะสังเกตเห็นสิ่งต่อไปนี้ในข้อความที่มาพร้อมกับวิดีโอแรกซึ่งเป็นส่วนหนึ่งของคำจำกัดความของอัลกอริทึม: "ในที่สุดจะสิ้นสุดในสถานะสิ้นสุดขั้นสุดท้าย" การสิ้นสุดเป็นส่วนสำคัญของนิยามของอัลกอริทึม นั่นเป็นสาเหตุที่ระบบปฏิบัติการและเซิร์ฟเวอร์ที่ไม่สิ้นสุดไม่ใช่อัลกอริทึม
LIProf

4

อัลกอริทึมเป็นเหมือนสูตรการปรุงอาหารที่ดี คุณมีอินพุตบางขั้นตอนกลางที่กำหนดไว้อย่างดีและรับผลลัพธ์ขั้นสุดท้าย

นำไปใช้กับการเขียนโปรแกรมมันเป็นคำอธิบายที่ชัดเจนของขั้นตอนที่คุณต้องทำเพื่อแก้ปัญหาเฉพาะ สิ่งใดก็ตามที่คุณสามารถเขียนลงในภาษาการเขียนโปรแกรมที่คุณเลือกอาจถูกมองว่าเป็นอัลกอริทึม - แต่โดยทั่วไปแล้วคำนี้ใช้สำหรับงานตรรกะหรือคณิตศาสตร์ทั่วไปเท่านั้นเช่นการเรียงลำดับหรือการค้นหา


มีอัลกอริทึมมากมายที่ไม่จำเป็นต้องให้ผลลัพธ์สุดท้าย ยกตัวอย่างเช่นระบบปฏิบัติการหรือเว็บเซิร์ฟเวอร์เป็นอัลกอริธึมที่ให้ผลลัพธ์สุดท้ายโดยปกติแล้วจะถือว่าเป็นข้อบกพร่อง
Jörg W Mittag

@ JörgWMittag แต่เป็น OS หรือเว็บเซิร์ฟเวอร์ "อัลกอริทึม" หรือไม่? ฉันคิดว่าพวกเขาไม่ได้ - พวกเขาอาจแก้ปัญหาย่อยของโดเมนของพวกเขาโดยใช้อัลกอริทึม - และในทุกกรณีพวกเขาต้องการผลสุดท้ายแน่นอน - แต่พวกเขายังมีส่วนที่ไม่ใช่อัลกอริธึม อัลกอริธึม (เหมือนที่คุณพูดในความคิดเห็นอื่น - ระบบปฏิบัติการและเว็บเซิร์ฟเวอร์เป็นโปรแกรมแต่ไม่จำเป็นต้องเป็นอัลกอริธึม )
Andres F.

2

อัลกอริทึมคือชุดของกฎหรือกระบวนการ (ในการคำนวณ) ที่ใช้สำหรับการแก้ปัญหา โดยทั่วไปมีปัญหาคุณต้องการทางออกและกระบวนการแก้ปัญหานี้คืออัลกอริทึม อัลกอริทึมมีชุดของกฎ / กระบวนการที่ จำกัด เพื่อเข้าถึงโซลูชัน

หากคุณเป็นเหมือนEdsger W. Dijkstraคุณจะเขียนอัลกอริทึมของคุณลงบนกระดาษหนึ่งแผ่นและทำงาน / ปรับแต่งอัลกอริทึมบนกระดาษจนกว่าคุณจะพอใจเกี่ยวกับอัลกอริทึมของคุณ มิฉะนั้น (โดยเฉพาะอย่างยิ่งเมื่อเขียนเอกสาร) ผังงานถูกนำมาใช้เพื่อแผนภาพแสดงการไหลของอัลกอริทึม / กระบวนการ สิ่งนี้ช่วยให้ผู้อื่นสามารถวิจารณ์แผนผังลำดับงานและปรับปรุงหากจำเป็น (โดยไม่ต้องกังวลว่าภาษาโปรแกรมใดที่จำเป็น)

ฉันไม่รู้ว่าจะตอบคำถามของคุณหรือไม่


ฉันไม่ชอบคำที่ตั้งเพราะมันหมายถึง "ไม่ได้สั่ง" ฉันต้องการ "ลำดับ" หรือเหตุการณ์ tuple ให้อยู่ในพื้นที่คณิตศาสตร์
BenjaminB

@ Ubiquitéชุดไม่ได้แปลว่า "ไม่ได้รับคำสั่ง" คุณสามารถจำแนกชุดในการสั่งซื้อที่คุณต้องการ (เช่นการสั่งซื้อแบบสุ่ม) แต่ถึงกระนั้นก็ไม่จำเป็นต้องมี downvote เพราะคนตีความคำว่า "set" นอกจากนี้คุณสามารถมีชุดผสมซึ่งเป็นกลุ่มของชุดซึ่งเป็นส่วนหนึ่งของอัลกอริทึม ดังนั้น "ชุด" สามารถเป็นอะไรก็ได้ตราบใดที่มันถูกใช้อย่างเหมาะสมเป็นวิธีการแก้ปัญหาอัลกอริทึมปัญหา
Buhake Sindi

ฉันไม่ได้ลงคะแนน!
BenjaminB

ขออภัยฉันไม่ได้ตั้งใจที่จะตำหนิคุณใน downvote downvoter ควรให้เหตุผลอย่างชัดเจนสำหรับ downvote
Buhake Sindi

1

อัลกอริทึม: ชุดการดำเนินการที่ได้รับการจัดอันดับไว้อย่างดีคือ 1) ไม่คลุมเครือและ 2) คำนวณได้อย่างมีประสิทธิภาพเช่นการดำเนินการเริ่มต้นจากครั้งแรกที่สร้างผลลัพธ์หลังจากการดำเนินการที่ จำกัด จำนวน


ตัวอย่างตัวนับ: ระบบปฏิบัติการ ในความเป็นจริงมันไม่ได้ให้ผลลัพธ์ใด ๆ เลยซึ่งโดยปกติจะถือว่าเป็นข้อบกพร่อง
Jörg W Mittag

@ Jörgระบบปฏิบัติการสร้างผลลัพธ์มากมายที่รวบรวมผลลัพธ์โดยรวมของการให้บริการระบบกับแอปพลิเคชัน
ThomasMcLeod

@ JörgWMittagเหมือนที่ฉันพูดในความคิดเห็นอื่น ๆ กับคุณข้อสรุปของการสังเกตของคุณอาจเป็นไปได้ว่าระบบปฏิบัติการไม่ใช่อันที่จริงแล้วอัลกอริทึม;)
Andres F.

1

อัลกอริทึมมันคือการรวมกันของขั้นตอนตามลำดับ (ขั้นตอนเหล่านี้สามารถคำนวณการประมวลผลข้อมูลและงานให้เหตุผล) ใช้ในการแก้ปัญหาในวิธีที่ง่ายและมีประสิทธิภาพ

มันถูกออกแบบมาอย่างมีประสิทธิภาพมากที่สุดที่สามารถแสดงผลได้ภายในระยะเวลาและเวลาที่ จำกัด เราสามารถใช้มันในภาษาการเขียนโปรแกรมใด ๆ

คุณสมบัติของอัลกอริทึม: ต่อไปนี้เป็นคุณสมบัติหลักของอัลกอริทึม: -

อัลกอริทึมต้องมีชื่อเฉพาะ ควรมีชุดอินพุตและเอาต์พุตที่กำหนดไว้อย่างชัดเจน อัลกอริทึมจะต้องอยู่ในลำดับที่ต่อเนื่องกับการดำเนินงานที่ชัดเจน มันต้องมีจุดสิ้นสุดบางอย่างเช่นมันหยุดในเวลาที่ จำกัด คลิกที่นี่เพื่อเรียนรู้เกี่ยวกับการออกแบบและวิเคราะห์อัลกอริทึม


0

ฉันใช้คำศัพท์เพื่ออธิบายสูตรเพื่อแก้ปัญหาเฉพาะ สูตรไม่จำเป็นต้องเขียนด้วยคณิตศาสตร์หรือมีความสัมพันธ์แบบ 1: 1 กับวิธีการ ในอัลกอริธึมของโรงเรียนและโครงสร้างข้อมูลมีความสัมพันธ์กันอย่างใกล้ชิดและสามารถเขียนเป็นสูตรคณิตศาสตร์หรือพิสูจน์โดยใช้บทพิสูจน์


0

อัลกอริทึมเป็นนามธรรมของโปรแกรมคอมพิวเตอร์และประกอบด้วยชุดของคำสั่งเพื่อให้บรรลุบางงานที่กำหนดไว้อย่างดีในจำนวนขั้นตอนที่ จำกัด แม้ว่าขอบเขตในการนับขั้นตอนอาจมีขนาดใหญ่มากและขั้นตอนแต่ละอาจจะซับซ้อน ( จำกัด ) งานในสิทธิของตนเอง ในขณะที่มี (ถูกต้อง) โปรแกรมที่รู้จักกันโดยทั่วไปไม่ใช่อัลกอริทึมพวกเขาทั้งหมดทำงานโดยการทำซ้ำชิ้นอัลกอริทึมในบางรูปแบบ (น่าสนใจยิ่งขึ้นคือโปรแกรมที่ไม่ทราบสถานะการเลิกจ้าง แต่โปรแกรมเมอร์ส่วนใหญ่ไม่ได้จัดการกับสิ่งต่าง ๆ โดยเจตนาฉันรู้ว่าฉันทำไม่ได้!)


0

IMO ไม่มีใครรู้ว่า :) ฉันเห็นคำนี้นำไปใช้กับฟังก์ชั่นการคำนวณทางคณิตศาสตร์เท่านั้นกับฟังก์ชั่นใด ๆที่รับอินพุตและสร้างเอาต์พุตและกับทุกสิ่งที่รับอินพุต

คุณคิดว่าต่อไปนี้เป็นอัลกอริทึมหรือไม่?

  1. ฟังก์ชันที่คำนวณอัตราดอกเบี้ยเงินกู้ในระยะเวลา 20 ปี
  2. ตรรกะทางธุรกิจที่ตรวจสอบว่ามีการป้อนข้อมูลทั้งหมดในใบสมัครสินเชื่อหรือไม่
  3. finderฟังก์ชั่นที่ queries ฐานข้อมูลสำหรับวัตถุลูกค้า
  4. ฟังก์ชัน "ตัวช่วย" ที่ล้างข้อมูลและจัดรูปแบบการป้อนข้อมูล
  5. ฟังก์ชันที่แยกวิเคราะห์ไฟล์ XML และจับคู่ข้อมูลกับวัตถุทางธุรกิจ
  6. คลาสที่รับอินพุตและเขียนลงในไฟล์ข้อความ

0

อัลกอริทึมเป็นความคิดวิธีการเทคนิค "smarts" สำหรับการคำนวณหรือการดำเนินงานที่เป็นนามธรรมในธรรมชาติ แต่เมื่อมันทำงานบนคอมพิวเตอร์ในโลกแห่งความจริงเราปรารถนาที่จะใช้ทรัพยากรให้น้อยที่สุดเท่าที่จะทำได้ซึ่งในโลกคอมพิวเตอร์เวลาและหน่วยความจำ


0

อัลกอริทึมเป็นลำดับขั้นตอนที่กำหนดไว้อย่างดีซึ่งให้ผลลัพธ์ในเวลา จำกัด

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

ลำดับ: ขั้นตอนจะดำเนินการตามลำดับที่ระบุไว้ ขั้นตอนอาจถูกดำเนินการมากกว่าหนึ่งครั้งขึ้นอยู่กับข้อมูล (ลูป) หรือไม่ดำเนินการเลยขึ้นอยู่กับข้อมูล (ถ้ามีคำสั่ง) อัลกอริทึมแบบขนานกำหนดลำดับเพียงบางส่วนในขั้นตอนดังนั้นฉันจึงเขียนทับที่นี่มากเกินไป มันจะถูกต้องมากขึ้นในการอธิบายว่ามันเป็นชุดที่เรียงลำดับบางส่วนกว่าลำดับ แต่ฉันต้องการที่จะทำให้คำง่ายขึ้นเล็กน้อย นอกจากนี้ยังเป็นไปได้อย่างง่ายดายในการฝังชุดที่สั่งบางส่วนในการสั่งซื้อเต็ม

ผลลัพธ์: สถานะสิ้นสุดหรือค่า ไม่จำเป็นต้องคาดการณ์ล่วงหน้า แต่มันจะต้องมีจุดจบที่แน่นอนที่จะทำให้เกิดเงื่อนไข นี่หมายความว่าระบบปฏิบัติการไม่ได้เป็นอัลกอริธึมแม้ว่ามันจะใช้งานจำนวนมากก็ตาม

แน่นอน: อัลกอริทึมรับประกันว่าจะหยุดบางครั้งอย่างน้อยก็ในเครื่องที่สามารถทำงานได้นานพอ ไม่รับประกันว่าจะหยุดในเวลาที่คาดการณ์ได้และไม่รับประกันว่าจะหยุดก่อนที่ดวงอาทิตย์จะขยายและเปลี่ยนเป็นสีแดงบนเครื่องที่มีอยู่ นี่ก็หมายความว่าระบบปฏิบัติการไม่ใช่อัลกอริทึมเพราะมันจะทำงานได้ตลอดไป ฉันเคยเห็นคำว่า "ขั้นตอน" ที่ใช้อธิบายบางสิ่งบางอย่างที่จะเป็นอัลกอริทึมถ้าเราแน่ใจว่ามันจะหยุดบางครั้ง (เป็นไปได้ที่จะมีอัลกอริทึมที่จะหยุดในเวลาที่ไม่รู้จักสมมติว่าการคาดคะเนของ Goldbach ได้รับการพิสูจน์ทางคณิตศาสตร์เป็นเท็จในการพิสูจน์ที่ไม่เป็นโครงสร้างดังนั้นจึงมีจำนวนคู่> 2 ที่ไม่ใช่ผลรวมของสองช่วง อัลกอริธึมที่ทดสอบเพียงตัวเลขก็จะยุติลงในที่สุด

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


-1

ถ้าฉันต้องให้คำจำกัดความทั่วไปฉันจะบอกว่าอัลกอริทึมเป็นสูตรสำหรับการแก้ปัญหาคอมพิวเตอร์ที่ซับซ้อนกว่าและจบลงด้วยการมีประสิทธิภาพมากกว่าโซลูชันพลัง / ชัดเจน

นอกจากนี้สิ่งสำคัญคือต้องทราบว่าอัลกอริทึมไม่ใช่ซอร์สโค้ดเฉพาะ มันเป็นการคำนวณเอง เหนือสิ่งอื่นใดนี่หมายความว่าภาษาทัวริงที่สมบูรณ์สามารถใช้อัลกอริทึมใดก็ได้ที่ภาษาทัวริงสมบูรณ์อื่น ๆ สามารถนำไปใช้ได้


ฉันชอบคำตอบนี้มากและฉันคิดว่าเราสามารถนำไปใช้เพิ่มเติมเล็กน้อยและพูด (แม้ว่าจะไม่เกี่ยวข้องกับคำถามเดิม): อัลกอริทึมใด ๆ คือการเพิ่มประสิทธิภาพของวิธีการค้นหาแรงเดรัจฉาน / ต้นไม้ สงสัยว่ามันสามารถพิสูจน์ได้อย่างเป็นทางการ
mojuba

-1 "อัลกอริทึม" เป็นคำศัพท์ทางคณิตศาสตร์ที่กำหนดไว้อย่างดี
Apalala

1
@Apalala ดังนั้นสิ่งที่จะหยุดคุณจากการนิยามใหม่เพื่อความชัดเจนหรือว่าเข้าใจความสำคัญของมันได้หรือไม่ อัลกอริทึมในฐานะ "ชุดคำสั่ง" แทบจะไม่พูดอะไรเลยสำหรับฉัน
mojuba

1
@ โมจิบะฉันไม่สนหรอกว่าคำนั้นจะถูกนิยามใหม่ แต่ฉันคิดว่านิยามดั้งเดิมนั้นมีประโยชน์เพราะอย่างน้อยก็มีความแตกต่างระหว่างวิธีการเข้าถึงปัญหา: อัลกอริทึมเป็นสูตรสำหรับการแก้ปัญหาโดยใช้ทรัพยากร จำกัด . เปลี่ยนคำจำกัดความนั้นและผลที่ตามมาคือเราจะต้องคิดคำใหม่ที่มีความหมายเหมือนกัน ยี้! ความรู้ทั้งหมดที่ได้รับในศตวรรษที่ผ่านมาเกี่ยวกับความสามารถในการคำนวณและความซับซ้อนหายไปโดยไม่มีคำจำกัดความของอัลกอริธึมเสียง!
Apalala

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