ควอนตัมคอมพิวเตอร์ 101

สวัสดีครับ วันนี้ทางทีม QuTE จะพาไปทำความเข้าเกี่ยวกับ ควอนตัมคอมพิวเตอร์ อย่างง่ายๆกันครับ

ประเด็นที่ 1 คอมพิวเตอร์ในปัจจุบันมีหลักการทำงานพื้นฐานอย่างไร

การทำงานของคอมพิวเตอร์ในปัจจุบันคือการประมวณผลของข้อมูลที่อยู่ในรูปของ บิต ได้แก่ 0 และ 1 ในหน่วยประมาณผลนั้นจะประกอบไปด้วยชิป (Chip) ในชิปนั้นจะประกอบไปด้วยโมดูลพื้นฐาน ในโมดูลนั้นประกอบข้ึนมาจากลอจิกเกตชนิดต่างๆ ได้แก่ AND GATE, OR GATE, NAND GATE, XOR GATE, NOR GATE และ NOT GATE ส่วนเจ้าลอจิกเกตเหล่านี้ประกอบขึ้นมาจากทรานซิสเตอร์ แสดงดังรูปที่ 1

รูปที่ 1 แสดงส่วนประกอบย่อยๆของชิปคอมพิวเตอร์

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

รูปที่ 2 แสดงการประกอบทรานซิสเตอร์ขึ้นมาเป็นลอจิกเกตต่างๆ
รูปที่ 3 แสดงการดำเนินการของบิตผ่านเกตแบบต่างๆ

และแน่นอนว่าทำให้เราสามารถดำเนินการกับข้อมูลได้ตามรูปที่ 3 (https://www.instructables.com/id/Basic-Logic-Gates/)

 

เมื่อเรานำเอาเกตในรูปแบบต่างๆนำมาประกอบในรูปแบบจำเพาะบางอย่างทำให้เราได้โมดูลและสามารถทำการบวกเลข 2 ตัวเข้าด้วยกันได้ ดังรูปที่ 4

รูปที่ 4 แสดงการประกอบของเกตแบบต่างขึ้นมาเป็นโมดูล

และแน่นอนว่าเมื่อเราบวกเลขได้ เราก็สามารถทำการคูณเลขได้เช่นได้ดังรูปที่ 5

รูปที่ 5 แสดงการสร้างโมดูลสำหรับการคูณ

หากเราลองจิตนาการ การดำเนินทางคณิตศาสตร์ในคอมพิวเตอร์นั้นโดยพื้นฐานง่ายมากเปรียบเหมือนมีเด็กเล็กๆมานั้งบวกลบคูณตัวเลขให้กับเราดังรูปที่ 6

รูปที่ 6 ภาพเปรียบเทียบว่าการดำเนินการทางตัวเลขในคอมนั้นง่ายมากๆ เหมือนมีเด็กเล็กๆมานั้งทำให้เราอยู่

หากเราขยายขนาดไปให้มีเด็กเล็กๆเต็มห้องเรียน เมื่อร่วมมือกันพวกเขาก็สามารถคำนวนอะไรที่ยากๆได้ ดังรูปที่ 7

รูปที่ 7 หากเรามีเด็กๆมากพอถึงแม้พวกเขาจะทำเป็นแค่การดำเนินการพื้นฐานแต่หากรวมมือกันก็สามารถแก้โจทย์ยากๆได้

แต่การเพิ่มเด็กๆเข้าไปเหมือนกับการที่เราต้องเพิ่มจำนวนชิป ภาพง่ายๆในพื้นที่ห้องเท่าเดิมแต่เราเพิ่มจำนวนเด็กๆเข้าไปอีกๆ เรื่อย เพื่อให้คอมพิวเตอร์ทำงานได้เร็วขึ้น แนวโน้มการเพิ่มเข้าเร็วในการทำงานของคอมพิวเตอร์นี้เป็นไปตามกฏของมัวร์ (Moore’s Law) ตามชื่อ กอร์ดอน มัวร์ (Gordon E. Moore) ผู้ที่ทำการบุกเบิกบริษัทอินเทล (Intel) เขาทำนายไว้ว่า “ปริมาณของทรานซิสเตอร์บนวงจรรวม โดยจะเพิ่มเป็นเท่าตัวประมาณทุก ๆ สองปี” ตามรูปที่ 8

รูปที่ 8 แสดงจำนวนทรานซิสเตอร์ที่เพิ่มขึ้นกับปี https://th.wikipedia.org/wiki/กฎของมัวร์

 

ประเด็นที่ 2 ขอต้อนรับเข้าสู่โลกของควอนตัม !

ขนาดของทรานซิสเตอร์ในปัจจุบันเท่ากับ 14 nm ซึ่งเล็กว่าไวรัส HIV

รูปที่ 9 เปรียบเทียบขนาดของทรานซิสเตอร์และไวรัส HIV

และก็เล็กกว่าเซลล์เม็ดเลือดแดงหลายเท่านัก !!

รูปที่ 10 ขนาดของเซลล์เม็ดเลือดแดง

อย่างที่ได้กล่าวไปก่อนหน้านี้ว่าหากกฏของมัวร์ยังคงดำเนินต่อไปเรื่อยๆ คือ ย่อขนาดของทรานซิสเตอร์ให้เล็กลงเรื่อยๆ เมื่อถึงจุดๆหนึ่ง ผลทางควอนตัมฟิสิกส์ที่เรียกว่า อุโมงค์ควอนตัม (Quantum tunnelling) จะเข้ามามีบทบาท (รูปเปรียบเทียบที่ 11) ทำให้อิเล็กตรอนกระโดนกันไปมาระหว่างทรานซิสเตอร์แทนที่จะไหลของใครของมัน ซึ่งไม่ดีแน่นอน

รูปที่ 11 แกนดาร์ฟไม่ได้คิดถึงผลของควอนตัมทำให้ปีศาจทะลุผ่านไปได้ ฮาาาา https://wccftech.com/intel-losing-process-lead-analysis-7nm-2022/

ดังนั้นแนวทางใหม่จึงมีความจำเป็น อย่างว่าในเมื่อควอนตัมสร้างปัญหา เราก็แก้ปัญหาด้วยควอนตัม (หนามยอกต้องเอาหนามบ่ง)

ประเด็นที่ 3 พฤติกรรมอันแปลกประหลาดทำให้เกิดบิตแบบใหม่เรียกว่า “ควอนตัมบิต”

โลกควอนตัมนั้นมีพฤติกรรมที่แตกต่างและไม่เป็นไปตามสามัญสำนึกของเราต่อโลกขนาดใหญ่รอบหลายอย่าง อย่างแรกคือ อนุภาคควอนตัม เช่น อิเล็กตรอน นั้นอยู่ในสภาวะซ้อนทับ (superposition) หากอิเล็กตรอนอยู่ภายใต้สนามแม่เหล็กภายนอกที่ชี้ไปในทิศ +z อิเล็กตรอนนั้นมีสมบัติติดตัวอันหนึ่งเรียกว่า สปิน (Spin) ซึ่งสปินของอิเล็กตรอนจะวางตัวตามทิศของสนามแม่เหล็กโดยมี 2 รูปแบบคือ สปินอัป(วางตัวตาม) และ สปินดาวน์(วางตัวตรงข้าม)

    \[ |\Psi>=\alpha|up>+\beta|down>\;,\;\;\;|\alpha|^2+|\beta|^2=1.................(1) \]

โดยที่ α และ β เป็นจำนวนเชิงซ้อนที่เกี่ยวข้องกับความน่าจะเป็นดังสมการด้านบน เช่น หากสถานะอยู่ใน

    \[ |\Psi>=1/\sqrt{2}|up>+1/\sqrt{2}|down>\;.................(2) \]

นั้นหมายความว่า หากเราทำการวัดสถานะสปินของอิเล็กตรอน มีโอกาส 50% ที่จะได้สปินอัป และ 50% ที่จะได้สปินดาวน์ #สถานะสปินที่ออกมาจากการวัดนั้นเกิดขึ้นแบบสุ่ม โอกาสที่จะออกมากน้อยขนาดไหนขึ้นกับตัวเลขสัมประสิทธิ์หน้าสถานะนั้นๆ#

จากสมการที่ (1) เราสามารถบิตแบบควอนตัมได้ หากเราให้ |0>=|up> และ |1>=|down> ดังนั้นสถานะควอนตัมเขียนใหม่ได้เป็น

    \[ |\Psi>=\alpha|0>+\beta|1>\;,\;\;\;|\alpha|^2+|\beta|^2=1.................(3) \]

เราเรียกสถานะด้านบนว่า “คิวบิต” (Qubit) ซึ่งอยู่ในสถานะซ้อนทับระหว่าง |0> และ |1> พร้อมๆกัน เราสามารถแสดงบ้าน 2 มิติของคิวบิตได้ดังรูปที่ 12

รูปที่ 12 สถานะที่เป็นไปได้ทั้งหมดจะวางตัวอยู่บนเส้นรอบวงกลมรัศมี 1 หน่วย

หากปรับค่า α และ β ทำให้เราได้สถานะใหม่จำนวนมากมายที่วางตัวอยู่ตามแนวเส้นรอบวงของวงกลม นอกจากวิธีในการแสดงที่อยู่ของคิวบิตดังรูปที่ 12 แล้วเรายังมีอีกทางเลือกที่เรียกว่า ทรงกลมบล๊อค (Bloch sphere) ดังรูปที่ 13

รูปที่ 13 ทรงกลมบล๊อคที่ใช้แสดงสถานะของคิวบิต https://en.wikipedia.org/wiki/Bloch_sphere

สถานะคิวบิตเขียนใหม่ในรูปของตัวแปรพิกัดทรงกลมดังนี้

    \[ |\Psi>=\cos(\theta/2)|0>+e^{i\phi}\sin(\theta/2)|1>.................(4) \]

โดยสถานะ |0> อยู่ที่ขั้วเหนือและ |1> อยู่ที่ขั้วใต้

หากตอนนี้เราเพิ่มจำนวนคิวบิตเข้าไปเป็น 2 คิวบิต ดังนั้นสถานะของระบบเขียนได้เป็น

    \[ |\Psi_1>|\Psi_2>=(a_1|0>+b_1|1>)(a_2|0>+b_2|1>) \]

หรือ

    \[ |\Psi_1>|\Psi_2>=a_1a_2|0>|0>+a_1b_2|0>|1>+a_2b_1|1>|0>+b_1b_2|1>|1> \]

จริงเราเขียนแบบย่อได้ดังนี้ |0>|0>=|00> ดังนั้นเราจะได้ระบบอยู่ในสภาวะซ้อนทับของ 4 สถานะย่อย ได้แก่ |00>, |01>, |10> และ |11> (หากเป็นกรณีบิตปกติเราจะไม่ได้แค่ 1 ใน 4 สถานะเท่านั้น)

ตอนหากเราเพิ่มจำนวนคิวบิตเข้าไปอีกเป็น 4 คิวบิต ดังนั้นสถานะย่อยทั้งหมดที่เป็นไปได้คือ 16 สถานะย่อยดังรูปที่ 14

รูปที่ 14 สถานะย่อยทั้งหมดที่เป็นไปได้ของ 4 คิวบิต

หากเรามีทั้งหมด N คิวบิตนั้นหมายความว่าเรามีจำนวนสถานะย่อยทั้งหมด 2^N สถานะย่อย ลองคิดว่าหากเรามี 100 คิวบิตหรือมากกว่านั้นเราจะมีสถานะย่อยเท่าไร เรียกว่ามหาศาลที่เดี่ยว !

# การสร้างคิวบิตนั้นสามารถทำได้หลายรูปแบบ ดังตัวอย่างที่ได้กล่าวไปนั้นใช้สปินของอิเล็กตรอน นอกนั้นเราอาจจะใช้สถานะโพราไลเซชันของโฟตอนก็ได้ หรือสถานะพลังงานของอิเล็กตรอน หรืออื่นๆดังตารางในรูปที่ 14.1

รูปที่ 14.1 การสร้างคิวบิตจากระบบฟิสิกส์ในแบบต่างๆ https://en.wikipedia.org/wiki/Qubit

# อีกประเด็นคือเจ้าคิวบิตเนี้ยแสนจะเปราะบางมากๆ คือการนบกวนจากภายนอกนั้นจะทำให้เกิดการยุบตัวของสถานะ (Collapse) อันทำให้สูญเสียสมบัติทางควอนตัมไป ปัญหานี้ถือว่าเป็นอะไรที่ท้าทายมากสำหรับทุกคนที่ต้องการสร้างควอนตัมคอมพิวเตอร์

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

รูปที่ 14.2 อนุภาค 2 ตัวที่สถานะของทั้ง 2 นั้นพัวพันกันอยู่ https://brilliant.org/wiki/quantum-entanglement/

ตัวอย่างสถานะพัวพันทางควอนตัมที่หลายคนรู้จักกันดีคือ สถานะของเบลล์ (Bell states)

ซึ่งทั้งหมดอยู่ในสถานะพัวพันสูงสุด (maximally entangled states) สำหรับระบบคู่ (Bipartite system) หากเราลองพิจารณาสถานะแรกซึ่งอยู่ในสภาวะซ้อนทับระหว่าง |00> และ |11> นั้นหมายความว่า หากอนุภาคตัวที่ 1 มีสถานะ 0 ตัวที่ 2 ก็อยู่ในสถานะ 0 ด้วยเช่นกัน หรือหากตัวที่ 1 อยู่สถานะ 1 ตัวที่ 2 ก็อยู่ในสถานะ 1 เหมือนกัน เมื่อเราทำการวัดสถานะของอนุภาคตัวที่ 1 (เราสนใจที่ตัวที่ 1 หรือจะเลือกตัวที่ 2 ก็ได้) แล้วผลของการวัดออกมาให้สถานะ |00> นั้นหมมายความว่า เรารู้ว่าอนุภาคที่ 1 อยู่ในสถานะ 0 และอนุภาคที่ 2 อยู่ในสถานะที่ 0 โดยที่เราไม่ต้องไปทำการวัดอนุภาคที่ 2 เลย ! (เอาไว้ทางทีมจะมาขยายความเรื่องนี้อย่างละเอียดอีกทีภายหลัง)

เจ้าความพัวพันนี้ถือว่าสำคัญมากๆเพราะเครื่องปรุงหลักในการที่เราจะดำเนินกระบวนการทางควอนตัมหลายๆอย่าง เช่น การเข้ารหัสทางควอนตัม หรือ ควอนตัมเทเลพอเทชัน เป็นต้น

 

ประเด็นที่ 4 การดำเนินการกับคิวบิตเพื่อให้ทำภาระกิจบางอย่าง

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

รูปที่ 15 ควอนตัมเกตบิดเวกเตอร์สถานะไปทำให้สถานะใหม่ออกมา

หากเราควอนตัมเกตแบบต่างๆมาประกอบกันเราจะได้วงจรควอนตัม(รูปแบบของวงจรขึ้นกับเราจะทำอะไร) ดังรูปที่ 16

รูปที่ 16 ตัวอย่างวงจรควอนตัม

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

รูปที่ 17 ตัวอย่างการคำนวนคู่ขนานในควอนตัมคอมพิวเตอร์

จากรูปเราเริ่มต้นจากสถานะ |010001> จากนั้นเราส่งสถานะผ่านควอนตัมเกตอันแรกทำให้เกิดสถานะซ้อนทับของ |010100>, |111001>, |001110> และ |101100> ด้วย สปส หน้าแต่ล่ะสถานะค่าหนึ่งๆ จากนั้นก็ส่งผ่านควอนตัมเกตอีกครั้ง และอีกครั้ง และอีกครั้ง สุดท้ายเราจะได้สถานะซ้อนทับของ |011101>, |011011>, |001010>, |101100>, |101001>, |010100> และ |111001> จากนั้นเราก็ทำการวัดเพื่อให้ได้สถานะออกมา แต่ประเด็นคือผลลัพธ์จะออกมาอย่างสุ่มตามค่าความน่าจะเป็นที่กำกับอยู่ อันนี้จริงเราสามารถปรับจูนเฟสของสถานะให้ค่าความน่าจะเป็นของสถานะที่เราต้องการนั้นมีค่าสูงๆได้

รูปที่ 18 การคำนวณแบบปกติ

โอเคตอนนี้เราลองคิดแบบปกติดูแสดงดังรูปที่ 18 เราเริ่มต้นจาก 010001 เราส่งผ่านเกตไปเรื่อยๆสุดท้ายจะให้ 011101 หากเราต้องการได้ผลลัพธ์อย่างอื่นก็ต้องทำใหม่อีกครั้ง

ประเด็นที่ 5 แล้วควอนตัมคอมพิวเตอร์น่าจะทำอะไรได้บ้าง

แน่นอนว่าการที่เราสร้างควอนตัมคอมพิวเตอร์ขึ้นมาเพื่อช่วยในการแก้ปัญหาที่คอมพิวเตอร์ปกติทำไม่ได้ ปัญหาแรกคือ ปัญหาแยกตัวประกอบของจำนวนเฉพาะในการเข้ารหัสแบบ RSA ในปัจจุบันการเข้ารหัสแบบ RSA นั้นถือได้ว่ามีความปลอดภัยสูงเพราะมีกุญแจ 2 ชุด คือ กุญแจสาธารณะ (public key) และ กุญแจส่วนตัว(private key) ดังรูปที่ 19

รูปที่ 19 การกสร้างกุญแจสาธารณะและกุญแจส่วนตัวจากผลคูณของจำนวนเฉพาะ 2 ตัว

หากคนต้องการดักเอาข้อความต้องรู้กุญแจส่วนตัว และหากเขาต้องการเดาว่ากุญแจส่วนตัวคืออะไรจากข้อมูลของกุญแจสาธารณะ เขาต้องการหาว่าตัวเลขเช่น 15 ประกอบขึ้นมาจากการคูณของจำนวนเฉพาะ 2 ค่าอะไรบ้าง สำหรับ 15 นั้นง่ายมากคือ 3*5 หรือดังในรูปที่ 20 แต่หากว่าจำนวนตำแหน่งของตัวเลขเพิ่มมากขึ้นมากๆ ปัญหานี้ไม่ใช้ปัญหาที่ง่ายเลย เช่น

108123048120091723472140979310934791237981234790123498123409781234908712398712398471234789

123497812349781234987123498721349078123498712349780123479812378912348971234781275671259078

เป็นต้น !

รูปที่ 20 ขั้นตอนในการเดากุญแจส่วนตัวจากข้อมูลของกุญแจสาธารณะ

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

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

รูปที่ 21 แบบจำลองโครงสร้างโปรตีน

ทั้งนี้ยังมีด้านอื่นๆอีก เพิ่มเติมดูได้ที่ 1 และ 2

ประเด็นที่ 6 เราจะสร้างควอนตัมคอมพิวเตอร์ได้สำเร็จจริงเหรอ และมันจะเจ๋งจริงๆเหรอ

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

อันนี้รายชื่อบริษัทต่างๆที่มีการลงทุนและทำวิจัยทาด้านคอมพิวเตอร์หรือเทคโนโลยีที่เกี่ยวข้อง

ยังไงเราก็รอดูกันต่อไปครับว่าสุดท้ายเราจะมีควอนตัมคอมพิวเตอร์หรือไม่ หากมี หน้าตาจะเป็นอย่างไร จบด้วยภาพเครื่องต้นแบบควอนตัมคอมพิวเตอร์ของ IBM เครื่องเท่าห้อง !

รูปที่ 22 https://bgr.com/2018/04/05/ibm-q-network-quantum-computing-startups/

ลองนึกเปรียบเทียบกับคอมพิวเตอร์เครื่องแรกของโลกดูว่าต่างกันมั้ย !

รูปที่ 23 คอมพิวเตอร์เครื่องแรกของโลกขนาดเท่าห้อง ! https://dailypost.in/news/international/worlds-first-computer-big-room-mouse-keyboard/

 

อ้างอิง ภาพสวยๆเอามาจากคลิปอธิบาย 2 อันนี้เลยครับ เข้าไปฟังกันได้

[1]

[2]

เรียบเรียง

สิขรินทร์ อยู่คง (QuTE Co-Founder)

วิทยาลัยเพื่อการค้นคว้าระดับรากฐาน (Institute for Fundamental Study: IF)

มหาวิทยาลัยนเรศวร