Presentation slides in Bulgarian for the Grammars for Generative Art lectures series held at the Faculty of Maths and Science at Sofia University
Winter Semester 2010/2011
Originally prepared by G.Penkov
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Grammars for Generative Art - Lectures @ Sofia University #1
1. Граматики за
генеративно изкуство
● Видове граматики
● Контекстно свободни
граматики
● Дърво на извод
● Context Free
● Примитиви
● Правила
● Едноименни правила
Подготвени от Г.Пенков като част от курса на ФМИ за зимен семестър 2010/2011. Заглавното
изображениe е от http://www.lazymoon.org.
2. Малко История
● Идеята за формално описание на граматически правила датира
от 400г. пр. Хр и е дело на древния индийски граматик Panini,
който описва правилата на езика Санскрит.
● Това се смята за най-ранния известен пример за дискриптивна
лингвистика, с което се поставя начало на лингвистиката.
● Санскритската граматика е описана с 3,959 правила.
● Идеята е възприета в западния свят едва през 19в. от
германския лингвист Франц Боп
● Кулминира във въведената от Ноа Чомски през
1957 йерархия, която описва четири основни
вида граматики
3. Видове граматики
нормална граматика
● Нека Г е граматика (N, T, Σ, S)
● Нормална граматика от общ тип (тип 0), в
която всяко правило σ е от вида :
γ1
Aγ2
→ ω
γ1
γ1
∈ (N ∪ T)*
A ∈N
ω ∈ (N ∪ T)+
● Пораждат множеството от езици, които могат
да бъдат разпознати от Тюрингова машина
4. Видове Граматики
контекстно зависима граматика
● Нека Г е граматика (N, T, Σ, S)
● Контекстно зависима граматика (тип 1), в която всяко
правило σ е от вида :
γ1
Aγ2
→ γ1
ω γ2
γ1
γ1
∈ (N ∪ T)*
A ∈N
ω ∈ (N ∪ T)+
● Почти всички натурални езици могат да бъдат описани с
този тип граматики
● Но този тип граматики пораждат далеч по-обширно
множество от езици
6. Видове граматики
Контекстно свободин граматики
● Нека Г е граматика (N, T, Σ, S)
● От вида :
A → ω
A ∈N
ω ∈ (N ∪ T)+
● В контекстно свободните граматики лявята част на
правилата винаги е нетерминален символ
● Обикновено правилата на този вид граматики се
описват с т.нар Бакус-Наурова Нотация
8. Нормални форми
● Нормална форма на
Чомски
● Контекстно свободни
граматики с правила от
вида
A → BC or
A → α or
S → ε
● Нормална форма на
Грейбах
● Контекстно свободни
граматики с правила от
вида
A → α X
E → ε
X ⊂ (N S ) *
9. Синтактично дърво
Нека е дадена граматика :
Г = [ {S}, {1,a,+}, Σ, S]
с правила
(1) S → S + S
(2) S → 1
(3) S → a
10. Синтактично Дърво
S
/|
/ |
/ |
S '+' S
/| |
/ | |
S '+' S 'a'
| |
'1' '1'
S → S + S (1)
→ S + S + S (1)
→ 1 + S + S (2)
→ 1 + 1 + S (2)
→ 1 + 1 + a (3)
S
/|
/ |
/ |
S '+' S
| /|
| / |
'1' S '+' S
| |
'1' 'a'
S → S + S (1)
→ 1 + S (2)
→ 1 + S + S (1)
→ 1 + 1 + S (2)
→ 1 + 1 + a (3)
Ляв изводДесен извод
11. Видове Граматики
Автоматни граматики
● Нека Г е граматика (N, T, Σ, S)
● С правила σ от вида :
A → B
A → aB
A → a
a ∈ N
A, B ∈N
● Автоматните граматики се разпознават от крайни автомати
● Регулярните изрази описват регулярни езици и в този смисъл
имат същата изразна мощ като регулярните граматики
12. Pushdown автомат
● Pushdown автомат е
краен автомат, който
може да използва стек
съдържащ данни.
● Различава се от КА по
това, че
● може да използва
стека, за да вземе
решение кой преход
да извърши
● може да променя
стека при прехода
13. Контекстно свободни граматики с
графични символи-терминали
ФОРМАЛЕН
ЕЗИК
ЕСТЕСТВЕН
ЕЗИК
ГРАФИЧЕН
ГЕНЕРАТИВЕН ЕЗИК
букви думи графични примитиви
азбука речник (лексика) графичните примитиви
дума фраза (изречение) генеративна картина
език множеството на
изреченията
всички възможни
генеративни картини
терминали думите графичните символи
нетерминали синтактични термини генеративни правила
аксиома изречение начална форма
правила синтактични правила генеративни правила
граматика синтаксис генеративен дизайн
14. CFDG
Context Free Design Grammer
● Разработена от Крис Койн
● CFDG позволява описване на множества от недетерминистични
правила за създаване продукция на изображения
● Прост “синтаксис” с ограничен набор от директиви
● Напомня на BNF
● Средата за разработка се казва Context Free (.NET 2)
● Напълно безплатна
● Може да генерира анимации, които проследяват създаването на
изображението (изисква QuickTime)
● CFDG генераторът има версия за Windows, MAC, Linux/Unix
● Може да създаде изображения до 100 мегапиксела
● Възможен изход към SVG
● Anti-aliasing система за графика
● Имплементирана на C++
18. Трансформационна матрица
● Всяко едно правило се “разписва” / “изобразява” спрямо дадена
трансформационна матрица.
● При разписване на следващото правило (при извод) може да
бъде породена нова трансформационна матрица.
● Новата трансформационна матрица е изведена от предишната и
по този начин всеки терминален символ е изобразен спрямо
“свое трансформационно пространство”.
● Всяка сложна форма и всяко следващо правило е в ново
трансформационно пространство.
● При генериране на нови форми в картината автоматично се
коригира и изгледа към нея, така че да обхваща всички елементи
● Освен ако експлицитно не е приведена в действие директива
за ограничаване на изгледа към катината
19. Начално правило и условия
● Началното правило се разписва в
трансформационна матрица със
следните характеристики :
● Размерът по (x,y) е (1,1)
● Положението по оста Z е 0
● Завъртането е на 0 градуса
● Изкривяването е (0', 0')
● Цветът е черен по HSV скалата
● Без отражение
20. Най-прост CFDG пример
startshape cStart
rule cStart {
CIRCLE {}
}
(0, -1/2)
(0, 1/2)
Заб : пунктирът няма да се изрисува от тази граматика.
Заб : ограждащият квадрат (в пунктир или не) обикновено
обозначава границите на резултатната структура.
● Единствено правило и единствен термнал.
● Реално изпълнима в CFDG
22. Параметри на графичните
примитиви
● Изписват се във фигурните скоби след графичната
примитива.
● Прилагат се спрямо текущата трансформационна матрица.
● Всяко правило съществува в отделна трансофрмационна
матрица.
●
● При разписване на следващото правило може (и най-
вероятно ще се породи) нова трансформационна матрица
● Параметрите могат да отместят формат както в
координатната система, така и в пространството на цветовете
(H, S, V)
23. Отместване по осите
startshape cBegin
rule cBegin {
CIRCLE { x 1 }
CIRCLE { x 2 }
CIRCLE { x 3 }
CIRCLE { x 4 }
CIRCLE { x 5 }
}
(0, 1/2) (1, 1/2) (2, 1/2) (2, 1/2)
// Параметрите предизвикват
отместване на координатната
система на примитивата по Х
24. Отместване
при разписване на правила
startshape cBegin
rule cBegin {
CIRCLE {}
C1 { x 1 }
}
rule C1 {
SQUARE { }
C2 { x 1 }
}
rule C2 {
TRIANGLE { }
}
// Всяко правило рисува по една
форма, която попада в квадрат
със стена 1.
// Всяко правило има извод в
следващото след пренестване на
текущата координатна система
25. Отместване
при разписване на правила
startshape cBegin
rule cBegin {
CIRCLE {}
CIRCLE {y 1}
CIRCLE {y -1}
CIRCLE {y -2}
CIRCLE {y 2}
C1 {x 1}
}
rule C1 {
SQUARE { }
C2 { x 1 }
}
rule C2 {
TRIANGLE { }
}
cB → cccccD
D → sE
E → t
26. ● Позволяват създаване на т.нар недетерминистични граматики.
● При създаване на структурата се избира едно от едноименните
правила.
● Може да бъде променена вероятността да е падне дадено
правило, като :
● Общата вериятност за всички едноименни правила е n, всяко има
вероятност 1
● Може да се зададе вероятност за дадено правило с число с
плаваща запетая с много голяма точност
● В зависимост от подадения random seed се прави различен избор.
● Може да се преизпълни случайния фактор при подаване на
същия random seed
● Механизъм за създаване на серии от подобни структури
Едноименни правила
27. Гранични условия
● Вграденият механизъм за ограничаване на безкрайни цикли от правила
безкрайни рекурсии от правила зе задейства, когато :
● Дадена форма стане по-малка от 0.3 от един пиксел
● Когато всички нови правила (останали за разписвнае) са изработени
само от терминални символи
● Няма възможност за задаване на брой рекурсивни нива
● Обичайна практика е да се включи терминално правило
● с празния символ (т.е. празно)
● само с терминални символи
● с значително по-малка вероятност и само с терминални символ
● Рекурсията може да бъде изключена напълно с параметър на
командния ред '-x'
● Може да бъде ограничен броя на генерираните фор с помоща на
параметър на командния ред '-m'
28. Едноименни правила
startshape B
rule B {
CIRCLE {}
E { x 1 }
}
rule E {
SQUARE { x 1 }
F { y -1 }
}
rule E {
TRIANGLE { x 1 }
F { y +1}
}
rule F .2 {
CIRCLE {}
}
rule F {
B{}
}
B → cE
E → sF
E → tF
F → c
F → B
31. Полезни любопитни връзки
● Context Free Art
http://www.contextfreeart.org/
● Quick Time
http://www.apple.com/quicktime/
● Pā ini @ Wikipediaṇ
● http://en.wikipedia.org/wiki/P%C4%81%E1%B9%87ini
● Страница на курса в Moodle на ФМИ
http://moodle.openfmi.net/course/view.php?id=271