ภาษาการเขียนโปรแกรมที่สามารถใช้ฟังก์ชั่น bijective ที่คำนวณได้เท่านั้น?


10

มีภาษาโปรแกรม (หรือตรรกะ) ที่สามารถนำไปใช้ (หรือแสดง) ฟังก์ชันถ้าหากเป็นฟังก์ชัน bijective ที่คำนวณได้?f:NNf


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

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

@FUZxxl นี่ไม่ได้จับภาพโปรแกรมที่ยกเลิกหลายอันที่จริงแล้วแม้แต่ฟังก์ชั่น f (x) = 1 เป็นไปไม่ได้ที่จะแสดงเป็นภาษานี้ นอกจากนี้ฉันยังรู้สึกว่าฟังก์ชั่นประเภทนี้ถูกบันทึกโดยการเขียนโปรแกรมฟังก์ชั่นทั้งหมดเนื่องจากทุกฟังก์ชั่นเป็นฟังก์ชั่นทั้งหมด
Chao Xu

@FUZxxl ฉันไม่คิดว่าถูกต้อง แต่ภาษาดังกล่าวจะต้องถูก จำกัด ตัวอย่างเช่นภาษาที่เทียบเท่ากับออโตมาตา จำกัด แน่นอนจะรับประกันว่าจะยุติ แต่จะมีข้อ จำกัด อย่างมากในสิ่งที่มันสามารถคำนวณ
jmite

@FZZxxl รายละเอียดของคำสั่งดังกล่าวมีความสำคัญ มันง่ายในการออกแบบภาษาการเขียนโปรแกรมซึ่งทุกโปรแกรมจะถูกยกเลิก มันเป็นเรื่องที่แตกต่างในการออกแบบภาษาที่เราสามารถแสดงทุกฟังก์ชั่น
วีเจย์

คำตอบ:


9

ไม่มีภาษาดังกล่าว

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

มีเหตุผลที่จะต้องใช้ภาษาการเขียนโปรแกรมที่ชุดของโปรแกรมที่ถูกต้องจะเป็นที่รู้จักโดยล่ามหรือคอมไพเลอร์นั่นคือมันเป็นชุดที่นับจำนวนที่คำนวณได้ สมมติว่าแล้วเรามีการเขียนโปรแกรมภาษาที่มีการตั้งค่าของโปรแกรมที่ถูกต้องนับ computably และดำเนินการได้อย่างแม่นยำทุก bijections คำนวณ{N} นั่นก็หมายความว่าเราสามารถระบุ bijections ที่คำนวณได้ทั้งหมด (เพียงระบุโปรแกรมที่ถูกต้องทั้งหมดในภาษาการเขียนโปรแกรมนี้) แต่นี่เป็นไปไม่ได้โดยทฤษฎีบทต่อไปNN

ทฤษฎีบท: สมมติว่าเป็นลำดับที่คำนวณได้ของ bijections ที่คำนวณได้ จากนั้นมี bijection คำนวณได้ซึ่งไม่ได้อยู่ในลำดับf0,f1,f2,

พิสูจน์ เราสร้าง bijectionดังนี้ ในการกำหนดค่าและเราจะดูที่ :g:NNg(2k)g(2k+1)fk(2k)

  • ถ้าจากนั้นตั้งค่าและ ,fk(2k)=2kg(2k)=2k+1g(2k+1)=2k
  • ถ้าแล้วชุดและ1fk(2k)2kg(2k)=2kg(2k+1)=2k+1

เห็นได้ชัดว่าทุก ,จะแตกต่างจากเพราะk) ยิ่งกว่านั้นสามารถคำนวณได้และมันเป็น bijection เพราะมันเป็นค่าผกผันของมันเอง QEDkNgfkg(2k)fk(2k)g


ทำไมคุณถึงต้องใช้ลูกเล่นและนี้ การใช้จะเพียงพอ 2k2k+1g(k)=fk(k)+1
FUZxxl

@FUZxxl: หากคุณใช้ฟังก์ชั่นที่ได้จะไม่ทำให้เกิดปัญหาfk(k)+1
Vor

คุณต้องแน่ใจว่าเป็น bijective g
Andrej Bauer

ข้อความเริ่มต้นผิดมีหลายภาษาในวรรณคดี
นาธาเนียล

หลักฐานของคุณดูเหมือนถูกต้อง บางทีฉันอาจสับสน ฉันต้องอ่านกระดาษของ Axelsen และGlück (ดูคำตอบของฉัน) อย่างถี่ถ้วนเพื่อหาว่าเกิดอะไรขึ้นที่นี่
นาธาเนียล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.