Pytanie:
Czy istnieje sposób na określenie postaci pierwszej zbioru, biorąc pod uwagę jego wektor przedziału?
Richard
2019-03-30 00:51:17 UTC
view on stackexchange narkive permalink

Zazwyczaj do określenia wektora przedziału używamy postaci pierwszej zbioru klas skoku. Ale czy istnieje algorytm, który pozwala nam pójść w drugą stronę? Innymi słowy, biorąc pod uwagę wektor przedziału zbioru, czy możemy odtworzyć technikę odwrotną, jaka jest (lub może być) forma pierwsza tego zbioru?

Domyślam się, że jest to po prostu algorytm brutalnej siły, aby przejść do drugiego sposób, ale być może istnieje matematyczna metoda uzyskania formy pierwszej.

Jedną z oczywistych trudności w tym pytaniu jest pojęcie zbiorów związanych z Z. Jeśli istnieje taki algorytm, czy może znaleźć wszystkie możliwe zbiory, które mają ten wektor przedziału?

To mogłoby być lepsze pytanie dla [cs.SE] (https://cs.stackexchange.com/) ... tak czy inaczej, powinieneś sprecyzować, jaki rodzaj algorytmu masz na myśli. „Metoda matematyczna” obejmowałaby również przeszukiwanie siłowe. Aby było jasne, co oznaczałoby „efektywne”, trzeba powiedzieć, w jakim parametrze. Przy ustalaniu systemu na 12-ET każdy algorytm jest technicznie mówiąc _O_ (1) ...
Istnieją tylko 224 formy podstawowe zbiorów klas skoku. Prawdopodobnie mógłbyś je wymienić i ich wektory interwałów w komentarzu tutaj :-)
Pisałem odpowiedź, ale potem stwierdziłem, że możesz je łatwo znaleźć na tej stronie Wikipedii: https://en.wikipedia.org/wiki/List_of_pitch-class_sets
@YourUncleBob Przepraszam, powinienem był być bardziej jasny: szukam metody, która nie obejmuje tylko korzystania z zasobów zewnętrznych.
@leftaroundabout to interesujące ... aby na nie odpowiedzieć, prawdopodobnie potrzebna byłaby informatyka, ale aby zrozumieć pytanie, jest teoria muzyki ...
Jeden odpowiedź:
Your Uncle Bob
2019-03-31 09:31:56 UTC
view on stackexchange narkive permalink

Cóż, jeśli komponujesz w domku w lesie i nie ma zasięgu sieci Wi-Fi ani telefonu komórkowego i zapomniałeś zabrać ze sobą papierowy wydruk ze strony Wikipedii, zrobienie tego ręcznie nie jest trudniejsze niż rozwiązanie Sudoku ™. Największym problemem jest to, że większość losowych wektorów przedziałów nie prowadzi do rozwiązania, więc możesz poświęcić dużo czasu na znalezienie takiego, który faktycznie działa.

Oto liczby form pierwszych, wektorów przedziałowych i par związanych z Z na rozmiar zestawu klas skoku:

 PC PF IV ZR 0 1 1 * 1 * 1 1 1 * 1 * 2 6 6 0 3 12 12 0 4 29 28 1 5 38 35 3 6 50 35 15 7 38 35 3 8 29 28 1 9 12 12 0 10 6 6 0 11 1 1 0 12 1 1 0 --- - - --- 224 200 24 

* Pusty zestaw klas Pitch i zestaw z jedną klasą Pitch i pierwszą formą (0) mają ten sam wektor interwału i tworzą parę związaną z Z .

Zauważysz symetrię w tych liczbach. W rzeczywistości, każda postać pierwsza i wektor przedziałowy zbioru o rozmiarze N mają odpowiadające PF i IV zbioru o rozmiarze 12-N. Oznacza to, że szukając zestawu z np. 9 klas skoku, możemy poszukać odpowiedniego zestawu z 3 klasami skoku (co jest łatwiejsze), a następnie przekształcić go.

Krok 1: Liczba klas skoku w zestawie:

Każdy rozmiar zestawu klas skoku ma wektory przedziałowe, których suma jest stałą liczbą; dla zbioru o rozmiarze N suma wektorów wynosi 0 + 1 + 2 + ... + N-1.

 Rozmiar komputera: 0 1 2 3 4 5 6 7 8 9 10 11 12 Suma IV: 0 0 1 3 6 10 15 21 28 36 45 55 66 

Wektor przedziału, taki jak <2,4,2,4,2,4> , jest nieprawidłowy, ponieważ jego suma wynosi 18. Wektor interwału <5,5,4,5,6 , 3> ma sumę 28 i (potencjalnie) odpowiada klasie Pitch o rozmiarze 8.

Ponadto pierwszych pięć wartości w wektorze interwału nie może być większe niż ustawiony rozmiar N i nie mniej niż 2 × N - 12, a szósta wartość nie może być większa niż N / 2 i nie mniejsza niż N - 6:

2 × N - 12 ≤ v 1 ~ 5 ≤ N
N - 6 ≤ v 6 ≤ N / 2

Krok 2: Przekształcenie Wektor przedziałowy:

Podczas przekształcania zbioru o rozmiarze N do rozmiaru 12-N, zacznij od obliczenia różnicy między sumami Wektorów przedziałów dla tych rozmiarów; na przykład gdy otrzymamy Wektor Przedziału o sumie 28, rozmiar zestawu wynosi 8, nowy rozmiar zestawu wyniesie 12 - 8 = 4, a nowa suma Wektora Przedziału wyniesie 6; więc różnica sum wynosi 28 - 6 = 22. Teraz podziel tę liczbę przez 5 i znajdź iloraz i resztę:

 22/5 -> iloraz = 4, reszta = 2 

Teraz odejmij iloraz od pierwszych pięciu wartości w wektorze, a resztę od szóstej wartości, np .:

 <5,5,4,5,6,3> -> <5- 4,5-4,4-4,5-4,6-4,3-2> -> <1,1,0,1,2,1> 

Tak więc dla zestawów o rozmiarach od 7 do 12 transformacja to:

 rozmiar IV (rozmiar N) IV (rozmiar 12-N) 7 <a, b, c, d, e, f> <a-2, b-2, c-2, d -2, e-2, f-1> 8 <a, b, c, d, e, f> <a-4, b-4, c-4, d-4, e-4, f-2> 9 <a , b, c, d, e, f> <a-6, b-6, c-6, d-6, e-6, f-3> 10 <a, b, c, d, e, f> <a- 8, b-8, c-8, d-8, e-8, f-4> 11 <a, b, c, d, e, f> <a-10, b-10, c-10, d-10 , e-10, f-5> 12 <a, b, c, d, e, f> <a-12, b-12, c-12, d-12, e-12, f-6> 

Krok 3: Tworzenie reprezentacji graficznej:

Najłatwiejszym sposobem przedstawienia klasy Pitch ustawionej na papierze jest narysowanie tarczy zegara z liczbami od 0 do 11. Następnie możesz zaznaczyć wybrane klasy tonacji (np. rysując wokół nich okrąg lub używając koloru), a Klasy Pitch, których nie można używać (np. Poprzez ich przekreślenie). Zapisz obok tarczy zegara, ile z każdego interwału jest nadal wymaganych. Na przykład. z wektorem przedziałowym z zerowymi interwałami odległości 5, moglibyśmy zacząć w ten sposób:

set:(0), not:(5,7)

Czerwone kółko oznacza Wybrana klasa skoku, wyszarzone okręgi wskazują klasy skoku, których nie można już używać, a niebieska linia wskazuje oś symetrii.

Krok 4: Rozpocznij zagadkowe:

Podstawowa strategia polega na wypróbowaniu każdej opcji i wycofaniu się, gdy znajdziemy jakiekolwiek niespójności. Liczbę opcji można zmniejszyć, biorąc pod uwagę symetrię i wybierając kolejność dodawania przedziałów. Oto kilka strategii:

  • Zaczynamy od dowolnej wybranej klasy Pitch (na przykładowym obrazku wybrałem 0). Tworzy to symetryczną sytuację. Kiedy dodajemy drugą klasę Pitch, mamy do rozważenia tylko jedną opcję; dodanie go po lewej lub prawej stronie pierwszej klasy skoku spowoduje symetryczny wynik, który będzie miał tę samą formę pierwszą.

  • Wybierając drugą klasę Pitch, możemy zacząć od dowolnego interwału, bez konieczności cofania się do tego wyboru. Każdy przedział, który jest obecny w wektorze przedziałowym, musi gdzieś iść, więc każde rozwiązanie będzie miało gdzieś ten przedział (po obróceniu).

  • Gdy nie jest już wymagane więcej wystąpień określonego interwału, oznacza to, że niektórych klas Pitch nie można już używać. Na przykładowym obrazie fakt, że wektor nie zawierał wystąpień przedziału 5, oznaczał, że klasy Pitch w odległości 5 od już wybranej Klasy Pitch (tj. 5 i 7, ponieważ 0 jest już wybrane) stają się bezużyteczne.

  • Jeśli interwał występuje tylko raz w wektorze interwału, rozpoczęcie od tego interwału natychmiast spowoduje, że niektóre klasy skoku będą bezużyteczne.

  • Kiedy dojdziesz do sytuacji, w której możliwych jest kilka opcji, zrób kopię aktualnej tarczy zegara i wymaganego licznika interwałów i wypróbuj pierwszą opcję. Jeśli to nie prowadzi do rozwiązania lub chcesz sprawdzić, czy istnieje drugie rozwiązanie, wróć do tego punktu, zrób kolejną kopię i wypróbuj następną opcję.

  • Zawsze, gdy znajdziesz niemożliwą sytuację, wróć do ostatniej, w której miałeś kilka opcji, i wypróbuj następną.

Krok 5: Przekształcenie zestawu klas wysokości tonu:

Jeśli przekształciłeś wektor interwału w kroku 2, masz aby przekształcić wynikowe zestawy klas Pitch poprzez ich odwrócenie. Narysuj nową tarczę zegara i zaznacz wszystkie cyfry, które nie są zawarte w zestawie.

Krok 6: Tworzenie pierwszej formy:

Spójrz na tarczę zegara i znajdź najmniejszy lub najdłuższy przedział najmniejszego; to będzie początek setu. Jeśli istnieje kilka opcji, rozważ każdą z nich. Teraz spójrz w obu kierunkach, aby zobaczyć, który kierunek ma najbliższą następną wybraną klasę Pitch. Kontynuuj, aż znajdziesz jedną opcję, która jest lepsza od innych. Kilka przykładów to wyjaśni:

set:(0,1,5,7,8,9) set:(0,2,5,10) set:(0,2,6,8)

W pierwszym przykładzie istnieje kilka przedziałów odległości 1; najdłuższa z nich przebiega między klasami Pitch 7, 8 i 9. Tak więc Forma Główna rozpocznie się o godzinie 7 i będzie przebiegać zgodnie z ruchem wskazówek zegara lub rozpocznie się o 9 i będzie przebiegać w lewo. Opcja zgodna z ruchem wskazówek zegara ma wtedy interwał 3, podczas gdy opcja przeciwnie do ruchu wskazówek zegara ma przedział 2, który jest mniejszy. Tak więc postać Prime zaczyna się od klasy Pitch 9 i biegnie w kierunku przeciwnym do ruchu wskazówek zegara: (9,8,7,5,1,0), co jeśli przenumerujemy Klasy Pitch z 0 staje się: (0,1,2,4,8,9 ).

W drugim przykładzie istnieją dwa przedziały dystansu 2, między 10, 0 i 2. Zatem forma pierwsza rozpocznie się od 10 i będzie przebiegać zgodnie z ruchem wskazówek zegara lub zaczynać się od 2 i postępować przeciwnie do ruchu wskazówek zegara. Opcja zgodna z ruchem wskazówek zegara ma wtedy interwał 3 (między klasami Pitch 2 i 5), podczas gdy opcja przeciwnie do ruchu wskazówek zegara ma interwał 5 (między klasami Pitch 10 i 5), który jest większy. Tak więc forma Prime zaczyna się od klasy Pitch 10 i biegnie zgodnie z ruchem wskazówek zegara: (10,0,2,5), co jeśli zmienimy numerację klas Pitch z 0, stanie się: (0,2,4,7).

W trzecim przykładzie istnieją dwa przedziały odległości 2, między 0 a 2 oraz między 6 a 8; mamy więc 4 opcje: zaczynając od 0 i idąc zgodnie z ruchem wskazówek zegara, zaczynając od 2 i idąc przeciwnie do ruchu wskazówek zegara, zaczynając od 6 i idąc zgodnie z ruchem wskazówek zegara lub zaczynając od 8 i idąc w lewo. Jednakże, ponieważ selekcja jest całkowicie symetryczna (z osiami przechodzącymi przez 1 i 7 oraz przez 10 i 4), każda z nich da w wyniku tę samą Pierwszą Formę: (0,2,6,8).

Przykładowy przegląd:

Nawet jeśli szukasz zestawu Pitch Class w rozmiarze 6 i szukasz drugiego możliwego rozwiązania związanego z Z, może to zrobić ręcznie w ciągu kilku minut. Spójrzmy na przykład:

 Wektor interwału: <2,3,3,2,4,1> Suma interwału: 15 Pitch Rozmiar zestawu klas: 6 

Zaczniemy od Pitch Klasa 0 i najpierw dodaj przedział 6, ponieważ jest tylko jeden z wymaganych. Oznacza to, że odtąd, za każdym razem, gdy do zestawu zostanie dodana Klasa Pitch X + 6, Klasa Pitch X + 6 po przeciwnej stronie tarczy zegara staje się bezużyteczna.

set:(0), req:(2,3,3,2,4,1) set:(0,6), req:(2,3,3,2,4,0)

Mamy teraz sytuację z dwiema osiami symetrii, co oznacza, że ​​w jakimkolwiek przedziale add next, będziemy musieli wypróbować tylko jedną klasę Pitch.

Zauważyliśmy, że wymagane są trzy wystąpienia interwału 3; sprawdźmy, czy jest możliwe, że żadna z nich nie została wykonana przy użyciu już istniejących klas Pitch 0 i 6. Oznaczałoby to, że klasy Pitch 3 i 9 stają się bezużyteczne, a kolejne cztery z 1, 2, 4, 5, 7, 8, 10 i 11 muszą być wybrane (poniżej, obrazek 1) . Jednak biorąc pod uwagę, że użycie X odrzuca X + 6, żadna ich kombinacja nie da trzech przedziałów o rozmiarze 3 (poniżej, obraz 2) . Możemy więc wywnioskować, że każde rozwiązanie obejmuje klasę Pitch 3 lub 9 (z których musimy wypróbować tylko jedną, ponieważ są symetryczne) (poniżej, obraz 3) .

set:(0,6), not:(3,9), req:(2,3,3,2,4,0) set:(0,1,4,5), not:(3,7,9,10), req:(1,2,2,1,3,0) set:(0,3,6), not:(9), req:(2,3,1,2,4,0)

Znowu ta sytuacja jest symetryczna z oś przechodząca przez 3 i 9. Spójrzmy teraz na fakt, że potrzebujemy tylko dwóch przedziałów odległości 1; oznacza to, że klas Pitch 1 i 2 nie można wybrać w tym samym czasie (podobnie jak 4 i 5). Gdybyśmy wybrali Pitch Classes 10 i 11 (lub symetryczny przypadek Pitch Classes 7 i 8), dałoby nam to dwa przedziały odległości 1, ale jedyną opcją dla ostatniej klasy Pitch byłoby 8 i ustawione (0 , 3,6,8,10,11) nie podaje właściwej liczby każdego interwału (poniżej, obraz 1) . Zatem co najmniej jeden przedział odległości 1 jest tworzony przez wybranie Pitch Class 1 lub 2 (nie musimy brać pod uwagę 4 i 5 ze względu na symetrię). Mamy więc dwie opcje (poniżej, obraz 2 i 3) :

set:(0,3,6,10,11) set:(0,1,3,6), not:(2,7,9) req:(1,2,1,2,3,0) set:(0,2,3,6), not:(1,8,9), req:(1,2,1,1,4,0)

Widzimy, że druga opcja (powyżej, obraz 3) wymaga tylko jednego dodatkowego odstępu odległości 1, więc jeden z dwóch dodatkowych Pitch Zajęcia będą musiały mieć 10 osób; jednakże dodaje to dwa interwały dystansu 4 (między klasami Pitch 10 i 2 oraz 10 i 6), gdy tylko jeden jest nadal wymagany. Więc drugą opcję można odrzucić.

W przypadku pierwszej opcji (powyżej, obraz 2) , ponownie skupmy się na wymaganej liczbie interwałów odległości 5. Potrzebujemy trzech z nich, więc ostatnie dwie klasy Pitch mogą znajdować się na odległość 5 od siebie i w odległości 5 od już istniejącej klasy Pitch (jedyną opcją jest wybranie Pitch Class 5 i 10) (poniżej, obraz 1) , lub nie są one w odległości 5 od siebie, a jedna z nich znajduje się w odległości 5 od dwóch już wybranych klas Pitch (oznaczałoby to wybranie klasy Pitch 8 i dowolnej z czterech pozostałych) (poniżej, obraz 2) .

set:(0,1,3,5,6,10) set:(0,1,3,6,8), not:(2,7,9), req:(1,1,1,1,1,0)

Pierwsza z tych opcji jest rzeczywiście poprawnym rozwiązaniem. Druga opcja daje nam cztery opcje dla szóstej klasy Pitch. Dodanie Pitch Class 4 nie powoduje dodania interwału odległości 5. Dodanie Pitch Class 5 powoduje dodanie właściwych interwałów, więc jest to kolejne rozwiązanie (poniżej, obraz 1) . Dodanie klasy Pitch 10 nie powoduje dodania interwału odległości 1. Dodanie klasy Pitch 11 powoduje dodanie odpowiednich interwałów, więc jest to kolejne rozwiązanie (poniżej, obraz 2) . Wydaje się więc, że mamy dwa dodatkowe rozwiązania:

set:(0,1,3,5,6,8) set:(0,1,3,6,8,11)

Kiedy tworzymy pierwszą formę te trzy rozwiązania, obracając je i / lub tworząc ich lustrzane odbicie, okazuje się, że pierwsze dwa są identyczne:

set:(0,1,3,5,6,10), PF:(0,1,3,5,6,8) set:(0,1,3,5,6,8), PF:(0,1,3,5,6,8) set:(0,1,3,6,8,11), PF:(0,1,2,4,7,9)

W rezultacie otrzymujemy dwa zestawy klas skoku z następującymi formami podstawowymi:

 Wektor interwału: <2,3,3,2,4,1> Zestawy klas skoku (PF): (0,1,3,5,6,8), (0,1,2,4,7,9) 


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...