क्या संगीत अंकन ट्यूरिंग-पूर्ण है?


63

मैं सोच रहा हूँ, संगीत अंकन भाषा ट्यूरिंग-पूर्ण है ?

मेरा पहला विचार यह है कि संगीत संकेतन में लूप हैं, लेकिन सशर्त शाखाओं को लिखने का कोई तरीका नहीं है, है ना?

मैं एक संगीतकार नहीं हूं, इसलिए शायद कोई व्यक्ति अंतराल को भरने में मदद कर सकता है?


7
संगीत विभाजन भाषा क्या है ? संगीत संकेतन के कुछ रूप ?
कुटकी

4
मुझे संगीत संकेतन के बारे में ज्यादा जानकारी नहीं है: क्या आप किसी तरह "म्यूटेबल वैरिएबल" (या "टेप") की अनबाउंड राशि को एनकोड कर सकते हैं? अन्यथा, मैं यह नहीं देखता कि यह कैसे पूरा हो सकता है।
नीकी

नहीं, यह नहीं है
shabunc

@ मिक्की मुझे यकीन नहीं है कि अगर एक बची हुई क्रिया या कुछ समान के रूप में कार्य करता है ...
स्क्रिप्‍ट

2
बेशक यह ट्यूरिंग-पूर्ण है, ब्रेनफक के 8 वर्णों का प्रतिनिधित्व करने के लिए बस 8 अलग-अलग नोटों का उपयोग करें। :)
क्रिस बर्ट-ब्राउन

जवाबों:


37

हां, यदि आप ट्रांसपोज़ेशन के लिए कुछ निर्देश मानते हैं - तो असामान्य नहीं, बल्कि अज्ञात।

फिर आप चून के रूप में एक टुकड़े की व्याख्या कर सकते हैं , जो कि ट्यूरिंग-पूर्ण है। कलाकार स्मृति है: उन्हें उन नोटों की संख्या को याद रखना चाहिए जिनके द्वारा वर्तमान में टुकड़ा ट्रांसपोज़ किया जाता है, और वे सभी नोट जो उन्होंने अब तक खेले हैं। जाहिर है यह केवल एक कंप्यूटर के लिए संभव है, या शायद एक जानकार।

चून मैनुअल से:

  • प्रतिस्थापन

    तीन ट्रांसपोज़ेशन निर्देश हैं, ऊपर ( +), नीचे ( -) और रद्द ( .)। एक ट्रांसपोज़ेशन इंस्ट्रक्शन, बाद में खेले गए अंतिम नोट की राशि से खेले गए सभी बाद के नोटों को स्थानांतरित करता है। रद्द करने का निर्देश ( .) ट्रांसपोज़िशन को शून्य पर सेट करता है।

    लेनदेन संचयी होते हैं, इसलिए भविष्य के नोटों को 2 तक स्थानांतरित करने के लिए चून कोड है b+, और 4 से होगा b++। इसके अलावा, उपयोग किया गया मूल्य पिछले नोटों का मूल्य है, जो कि ट्रांज़िशन के लागू होने के बाद होता है, इसलिए b+b+भविष्य के नोटों को 6 से स्थानांतरित करता है, 4 से नहीं।

  • जॉन केज

    जॉन केज इंस्ट्रक्शन ( %) आउटपुट स्ट्रीम में एक नोट साइलेंस का कारण बनता है। एक जॉन केज का ट्रांसपोज़िशन मूल्य शून्य है - %-और %+नो-ऑप्स हैं (सिवाय इसके कि आउटपुट में एक मौन जोड़ा जाता है)।

  • बार बार

    बार बार निर्देश ( ||:और :||) एक लूप को संलग्न करता है। लूप सामने आने से पहले सबसे हाल के नोट द्वारा इंगित समय की संख्या को निष्पादित करेगा ||:। शून्य या नकारात्मक मूल्य का मतलब होगा कि चून मिलान से खेलना शुरू करने के लिए तुरंत कूद जाएगा :||। एक जॉन केज का अर्थ है हमेशा के लिए दोहराना - %||::||एक अनंत लूप है।

  • ट्यूनिंग कांटा

    ट्यूनिंग फोर्क निर्देश ~छोरों को तोड़ने का एक तरीका प्रदान करता है। यदि एक ट्यूनिंग कांटा एक लूप में सामना किया गया है, और खेला गया अंतिम नोट मूल्य का एक नोट था A, तो चून तुरंत अगले :||निर्देश के बाद से खेलना शुरू करने के लिए कूद जाएगा । यदि आगे कोई :||निर्देश नहीं है (अर्थ ~किसी भी दोहराने सलाखों के बाहर इस्तेमाल किया गया है), तो प्रदर्शन तुरंत समाप्त हो जाएगा।

  • मार्करों

    मार्कर अद्भुत प्रोग्रामिंग सुविधा प्रदान करते हैं। एक मार्कर एक निचला मामला पत्र या शब्द है जो आउटपुट स्ट्रीम में एक बिंदु को याद करता है। मार्कर (नीचे देखें) का जिक्र मार्कर द्वारा फिर से खेले जाने के बाद खेले गए नोट का कारण होगा। ध्यान दें कि लेन-देन इस नए खेले गए नोट को प्रभावित करेगा।

    जहां दो या दो से अधिक मार्कर क्रमिक रूप से होते हैं, या एक मार्कर एक नाटक-से-मार्कर निर्देश का पालन करता है, उन्हें व्हाट्सएप द्वारा अलग किया जाना चाहिए।

  • आउटपुट से खेलें

    आउटपुट से चलाएं निर्देश ( =) आपको फिर से नोट्स चलाने की अनुमति देता है जो पहले ही आउटपुट स्ट्रीम में चलाए जा चुके हैं। आप संख्या से नोटों का उल्लेख कर सकते - 5 वां टिप्पणी खेला के बाद से कार्यक्रम शुरू हुआ होगा =5, रिश्तेदार संख्या से - 3 सबसे हाल ही में टिप्पणी खेला होगा =-3या मार्कर द्वारा - टिप्पणी खेला के बाद मार्कर xहोगा =x

    किसी मार्कर का फिर से उपयोग करना एक सामान्य मुहावरा है और तुरंत इसे इस तरह देखें x=x:। यह x=x+yएक पारंपरिक प्रोग्रामिंग भाषा में कहने के लिए समान है (जहां yवर्तमान में प्रभावी ट्रांसपोज़िशन मूल्य का प्रतिनिधित्व करता है)।

एक जॉन केज बस एक आराम है , एक ट्यूनिंग फोर्क है (मोटे तौर पर) दाल सेग्नो, और एक मार्कर सेग्नो है। मुझे लगता है कि ट्यूनिंग कांटा एक अतिरिक्त कलाकार द्वारा खेला जा सकता है जिसे प्राथमिक कलाकार प्रतिक्रिया देता है, लेकिन सिद्धांत एक ही है।


1
मैं कहूंगा कि यह सवाल का सबसे अच्छा जवाब है: अन्य उत्तरों में से कोई भी साबित नहीं करता है कि संगीत संकेतन पूर्ण नहीं है

24

ट्यूरिंग पूर्णता की आवश्यकता होती है, न्यूनतम, तीन चीजों पर: एक अनंत लूप, एक सशर्त कूद (यदि-तब), और गणना के परिणामों को स्मृति में कहीं स्टोर करने का एक तरीका। यहां तक ​​कि अगर संगीत संकेतन में सशर्त कूदता है, तो इसमें राज्य नहीं है , इसलिए नहीं, यह ट्यूरिंग-पूर्ण नहीं है।


13
यह सॉर्ट-ऑफ है सशर्त कूदता है, जिसे दोहराने के संकेत के साथ संयोजन में उपयोग किया जाता है: "पहले दोहराने पर, इस भाग को खेलें, दूसरे दोहराने पर, उस भाग को खेलें"। रिपीट काउंटर (जिसे आप खेलते समय अपने सिर में पकड़ेंगे) स्थिति है। लेकिन यह वास्तव में एक अनंत टेप युक्त राज्य नहीं है।
जेस्पर

49
मजेदार तथ्य: लैंबडा कैलकुलस में कोई लूप नहीं है, कोई सशर्त कूद नहीं है, और गणना के परिणामों को मेमोरी में कहीं स्टोर करने का कोई तरीका नहीं है। फिर भी यह पूरी तरह से चल रहा है ;-)
nikie

11
@ नाइकी: वास्तविकता के साथ सार को भ्रमित न करें। लैम्ब्डा कैलकुलस में सशर्त मूल्यांकन की अवधारणा है, पुनरावृत्ति का उपयोग लूपिंग और जंपिंग दोनों के लिए किया जाता है, और राज्य की गणना अभिव्यक्तियों के मूल्यांकन के परिणामों के रूप में की जाती है। अवधारणाएं हैं; वे सिर्फ वास्तविक कंप्यूटर प्रोग्रामिंग से बहुत अलग तरीके से लागू किए जाते हैं।
मेसन व्हीलर

5
@MasonWheeler: LC में लूप्स, स्टेट और कंडीशन्स की मूलभूत अवधारणाएँ नहीं हैं, लेकिन आप एक समान उद्देश्य की सेवा करने वाली चीज़ों को प्राप्त कर सकते हैं। यह कहने का एक और तरीका है कि यह ट्यूरिंग पूरा हो गया है। तो सवाल यह नहीं है: क्या संगीत की धारणा में ये अवधारणाएँ हैं, लेकिन क्या आप उन्हें किसी तरह प्राप्त कर सकते हैं? आपने बिना किसी प्रमाण के बस दावा किया कि आप नहीं कर सकते। (मैं आपके निष्कर्ष से सहमत हूं, मुझे नहीं लगता कि आपका तर्क मान्य है।)
nikie

9
@MasonWheeler: लैम्ब्डा पथरी है असली कंप्यूटर प्रोग्रामिंग।
dan_waterworth

23

ट्यूरिंग पूरी होने के लिए एक भाषा के लिए मानक प्रमाण उस भाषा में ट्यूरिंग मशीन लिखना है। यह साबित करता है कि भाषा (आमतौर पर भाषा का सबसेट) और ट्यूरिंग मशीन के बीच एक समानता है।

"म्यूज़िकल नोटेशन" की धारणा थोड़ी फिसलन भरी है। बहुत सारे मानकीकृत उत्कीर्णन हैं जिनका उपयोग किया जाता है। हालाँकि। लिफाफा-धक्का देने वाले संगीतकार हैं जो कागज पर सभी प्रकार के पागल सामान नीचे लिखते हैं।

आइए दिखाते हैं कि आप संगीत संकेतन के सबसेट पर ध्यान केंद्रित करना चाहते हैं, जिसे फिनाले या सिबेलियस या कुछ मुख्य-धारा उत्कीर्णन टूलसेट का हिस्सा माना जाता है।

इसलिए।

पायथन (या सी या जो भी) के लिए आप प्रतीकों, टेप, संक्रमण नियमों और विभिन्न क्रियाओं को परिभाषित करते हैं जो टेप को राज्य परिवर्तन और टेप गति को प्रतिबिंबित करने के लिए अपडेट करते हैं, टेप पर प्रतीकों को पढ़ते और लिखते हैं।

"संगीत संकेतन" का उपयोग करते हुए, हमें प्रतीकों और स्टेटफुल टेप, ट्रांज़िशन नियमों और विभिन्न क्रियाओं को परिभाषित करना होगा जो टेप को अपडेट करते हैं।

हमारे पास जो कमी है वह एक स्टेटफुल टेप है और नियम जो संगीतकारों को बताते हैं कि टेप पर प्रतीकों का जवाब कैसे दिया जाए और उस टेप को कैसे अपडेट किया जाए।

एक अर्थ में, हवा में चारों ओर बहने वाली शोर राज्य टेप हो सकता है। परंतु। टेप को रिवाइंड करने का कोई आसान तरीका नहीं है। रिवाइंड की इस कमी का मतलब है कि कलाकार को किसी तरह का एक निजी "टेप" रखना होगा।

यह संगीत संकेतन के बाहर हो जाता है और कलाकार को कुछ अन्य अतिरिक्त-संगीत निर्देश में।


ठीक है, आप वास्तव में एक चल रहे कार्यक्रम को रिवाइंड नहीं कर सकते हैं, या तो ... (लेकिन हाँ, मुझे वही मिलता है जो आपको राज्य को अपडेट करने के बारे में है, लेकिन क्या यह बदले में एक कार्यात्मक भाषा हो सकती है?)
इज़काता

2
आप कार्यक्रम को रिवाइंड नहीं करते हैं। आप टेप को रिवाइंड करें। मुद्दा यह है कि ट्यूरिंग टेप में सभी स्थान सुलभ हैं। यह "रैंडम एक्सेस मेमोरी" है जो आगे और पीछे की गतियों के साथ एक रेखीय समय तक सरल है।
S.Lott

ओह, मुझे याद है कि अब, क्षमा करें। मैं "टेप" के बारे में सोच रहा था क्योंकि जिस चीज पर संगीत किसी कारण से लिखा गया था =)
इज़्काता

ट्यूरिंग मशीन का निर्माण कुछ साबित करने के लिए मानक तरीका है ट्यूरिंग पूर्ण, लेकिन इसका मतलब यह सच नहीं है - केवल इसलिए कि आप यह पता नहीं लगा सकते हैं कि ट्यूरिंग मशीन बनाने का मतलब यह नहीं है कि ट्यूरिंग पूर्ण नहीं है। ट्यूरिंग मशीन (एक टेप और सभी के साथ) सिर्फ एक मनमाना अमूर्त है जिसमें पर्याप्त कंप्यूटिंग शक्ति होती है; टेप की कोई धारणा के साथ शक्तिशाली के रूप में अन्य सार हैं। लैम्ब्डा कैलकुलस, एसकेआई कैलकुलस या कुछ गूढ़ भाषाओं (फ्रैक्चरन शांत है) पर एक नज़र डालें।
तिखन जेल्विस

3

अधिकांश संकेतन व्याख्या के लिए खुले हैं, और प्राकृतिक भाषा निर्देश संगीत संकेतन का एक स्वीकृत पहलू है - और यह सबसे अधिक है यदि सभी पश्चिमी संगीत के इतिहास के नहीं हैं।

परिभाषा के अनुसार फ़र्मेटा कलाकार के विवेक पर निर्भर करता है, जिसका अर्थ है कि यह अपने स्वयं के राज्य पर निर्भर करेगा, जो लगभग हमेशा बाहरी कारकों के संयोजन में संगीत द्वारा बदल दिया जाता है - इसलिए यह संगीत संकेतन की सांख्यिकीय प्रकृति पर कुछ प्रश्न उठाता है।

बाख के संगीत की पेशकश से कैनन 2 प्रति टन एक असीम रूप से लूप वाला टुकड़ा है जिसकी टोन प्रत्येक बार एक पूरे चरण के माध्यम से बढ़ती है जब तक कि टुकड़ा प्रदर्शन किया जाता है।

हाल ही में, उदाहरण के लिए "प्रत्येक एकल कलाकार के लिए दोहराएं" जैसे उदाहरणों को देखना आम है, उदाहरण के लिए, डेव ब्रूबेक के टेक फाइव जैसे जैज़ टुकड़ों के नोट किए गए संस्करण ।

यह कहा गया है, एक तरफ उत्तर के रूप में स्वाभाविक रूप से मनमाने ढंग से पहलुओं से अलग है, अन्य उत्तर के रूप में, कुछ भी नहीं है, लेकिन सामान्य प्रतीकों के साथ संगीत संकेतन पूरा नहीं हो रहा है।


1

यह ट्यूरिंग पूरी भाषाओं से संबंधित नहीं है क्योंकि यह एक वर्णनात्मक भाषा है। गणना या डेटा को संशोधित करने के संदर्भ में कोई आदेश नहीं हैं, कोई भी राज्य, कोई इनपुट, कोई आउटपुट नहीं है केवल विवरण के परिणाम को छोड़कर।

इसके अलावा इनपुट के आधार पर कोई सशर्त छलांग नहीं है। जब आप सभी जंप का समाधान करते हैं तो आपको एक पेड़ नहीं बल्कि एक रैखिक संरचना मिलती है। तो सभी "प्रोग्राम" जो इस भाषा के द्वारा तैयार किए जा सकते हैं, बिना किसी लूप या जंप के रैखिक हैं।


1
ट्यूरिंग पूर्ण भाषा के लिए आपने जो सूचीबद्ध किया है, वह आवश्यक नहीं है। लैम्ब्डा कैलकुलस में केवल एप्लिकेशन, वैरिएबल और लैम्ब्डा होते हैं (जैसे कोई लूप, स्टेट्स या कमांड नहीं) लेकिन ट्यूरिंग पूर्ण है। वही एसकेआई कॉम्बिनेटरों की तरह संगणना के अन्य मॉडलों के एक समूह के लिए जाता है।
तिखन जेल्विस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.