Мне интересно, является ли язык музыкальной нотации Turing-Complete ?
Моя первая мысль: в музыкальной нотации есть петли, но нет способа написать условные ветки, верно?
Я не музыкант, так что, возможно, кто-то может помочь заполнить пробелы?
turing-completeness
Klaim
источник
источник
Ответы:
Да, если вы принимаете несколько инструкций для транспонирования - редко, но не неизвестно.
Затем вы можете интерпретировать пьесу как Чун , которая завершена по Тьюрингу. Исполнитель - это память: он должен помнить количество нот, на которые в данный момент транспонируется пьеса, и все ноты, которые он сыграл до сих пор. Очевидно, что это возможно только для компьютера или, возможно, ученого.
Из руководства Choon:
Джон Кейдж просто отдых , камертон это (примерно) Dal Segno и маркер является Segno. Я предполагаю, что камертон мог сыграть дополнительный исполнитель, которому отвечает основной исполнитель, но принцип тот же.
источник
Полнота Тьюринга требует, как минимум, трех вещей: бесконечный цикл, условный переход (если-затем) и способ хранения результатов вычислений где-то в памяти. Даже если в музыкальной нотации были условные переходы, у нее нет состояния, поэтому нет, она не завершена по Тьюрингу.
источник
Стандартным доказательством того, что язык является полным по Тьюрингу, является написание машины Тьюринга на этом языке. Это доказывает, что существует эквивалент между языком (обычно подмножеством языка) и машиной Тьюринга.
Понятие «Музыкальная нотация» немного скользкое. Существует много стандартизированной гравировки, которая используется. Тем не мение. Есть композиторы, которые толкают конверты и пишут на бумаге все сумасшедшие вещи.
Давайте представим, что вы хотите сосредоточиться на подмножестве музыкальных обозначений, которое считается достаточно стандартным, чтобы быть частью Finale или Sibelius или некоторого основного набора инструментов для гравировки.
Так.
Для Python (или C или любого другого) вы определяете символы, ленту, правила перехода и различные действия, которые обновляют ленту для отражения изменения состояния и движения ленты, чтения и записи символов на ленте.
Используя «Музыкальную нотацию», мы должны определить символы и ленту с состоянием, правила перехода и различные действия, которые обновляют ленту.
Нам не хватает ленты состояния и правил, которые сообщают музыкантам, как реагировать на символы на ленте и как ее обновлять.
В некотором смысле шумы, распространяющиеся в воздухе, могут быть записью состояния. Но. Нет простого способа перемотать ленту. Отсутствие перемотки означает, что исполнителю придется хранить какую-то частную «ленту».
Это выходит за рамки музыкальной нотации и некоторых других дополнительных музыкальных инструкций для исполнителя.
источник
Большая часть нотации открыта для интерпретации, и инструкции на естественном языке являются принятым аспектом музыкальной нотации - и были на протяжении большей части, если не всей истории западной нотной музыки.
Fermatas по определению зависят от усмотрения исполнителя, что означает, что это будет зависеть от их собственного состояния, которое почти всегда изменяется музыкой в сочетании с внешними факторами - так что возникает ряд вопросов о природе музыкальной нотации без состояния.
Canon a 2 per Tonus из музыкального предложения Баха представляет собой пьесу с бесконечной петлей, тональность которой увеличивается на целый шаг каждый раз до тех пор, пока исполняется пьеса.
Совсем недавно стали встречаться такие инструкции, как «повторить для каждого солиста», например, в нотных версиях джазовых произведений, таких как «Дайв Брубек», « Take Five» .
Тем не менее, помимо произвольно произвольных аспектов, таких как fermata, как утверждают другие ответы, музыкальная нотация только с общими символами, вероятно, не завершена по Тьюрингу.
источник
Это не относится к полным языкам Тьюринга, так как это описательный язык. Здесь нет команд с точки зрения расчета или изменения данных, нет состояний, нет ввода, нет вывода, кроме результата самого описания.
Также нет условных переходов в зависимости от входа. Когда вы решаете все прыжки, вы получаете линейную структуру, а не дерево. Таким образом, все «программы», которые могут моделироваться этим языком, являются линейными без каких-либо циклов или скачков вообще.
источник