Я читав главу в ЛЯХ, яка насправді не мала для мене сенсу. Я розумію, що блискавки можуть довільно перетинати деревоподібну структуру, але мені потрібно трохи уточнити це. Також чи можна узагальнювати блискавки до будь-якої структури даних?
Я читав главу в ЛЯХ, яка насправді не мала для мене сенсу. Я розумію, що блискавки можуть довільно перетинати деревоподібну структуру, але мені потрібно трохи уточнити це. Також чи можна узагальнювати блискавки до будь-якої структури даних?
Відповіді:
Застібкою-блискавкою, загалом, є структура даних із отвором у ній. Блискавки використовуються для обходу / маніпулювання структурами даних, а отвір відповідає поточному фокусу обходу. Зазвичай є також елемент розглянутої структури даних, так що в них є (список) блискавка та список або (дерево) блискавка та дерево. Блискавка дозволяє програмісту ефективно пересуватися по структурі даних, навіть замінюючи елемент у фокусі. Пара блискавки і елемент у фокусі задовольняють тим обмеженням, що розміщення елемента у фокусі в отворі надає оригінальну структуру даних.
Блискавки можуть бути узагальнені до довільних індуктивних типів даних. Поняття можна визначити індексованим типом (Див. Типи даних, що індексуються типами ). Вони також пов'язані з ідеєю похідної структури даних , і вона вивчалася з точки зору теоретичної категорії .
Зазвичай блискавка - це пара речей: це структура з отвором, фокус , який представляє, де ви знаходитесь в структурі, разом із контуром , записуючи, як ви дійшли до цього фокусу. (Ця стежка - хлібний хліб ЛЯХ.)
Шлях полягає в тому, як ви насправді застосовуєте зміни до структури: "йдіть вниз, ідіть вліво, збільшуйте значення". Неодноразово застосовуючи в цій точці "йти вгору" ( go_up
у статті Гюєта ), ви можете повторити свої кроки і закінчити нову мутовану копію оригінальної структури.
Вони справді можуть бути узагальнені до інших структур: