Домашнє Завдання 3 - ViriAldi/HomeworkCycle2020 GitHub Wiki

Абстрактні Типи Даних

Lattice ADT

Абстрактний тип даних, який має використовуватися для реалізації сітки ландшафту. Включає такі можливості: створення з 2д масиву, доступ та зміна елементів, незмінність розміру, неперрвний зв'язок точок АДТ з географічними координатами та фізичними вимірами, пошук найкоротшого шляху між 2-ма точками з регулюванням метрики (швидко й ефективно), доступ до 2д-масиву кожного з атрибутів. Як вершини використовує об'єкти Абстрактного Типу Даних Node ADT. Повинен бути пов'язаним з географічними координатами й задовільняти наступний інтерфейс:

  • Lattice(np.adarray, kwargs) - створює об'єкт АДТ з двовимірного масиву numpy. Перетворення відубвається зігдно з параметрами kwargs.

  • Lattice.num_rows() - повертає кількість рядків сітки

  • Lattice.num_cols() - повертає кількість стовпців сітки

  • Lattice[i, j] - доступ до елемента сітки за позицією

  • Lattice[i, j] = value - зміна елемента сітки за позицією

  • Lattice.path(Node1, Node2, kernel) - пошук найкоротшого шляху між двома заданими вершинами

  • Lattice.indexes(coordinates) - повертає позицію в масиві за географічними координатами

  • Lattice.x_2d - повертає стіку як 2д-масив для атрибуту х

  • Lattice.y_2d - повертає стіку як 2д-масив для атрибуту у

  • Lattice.z_2d - повертає стіку як 2д-масив для атрибуту z

Node ADT

Node ADT - обстрактний тип даних, що відповідає за реалізацію вершин сітки, або точки на поверхні Землі. Містить поля, що відповідають за фізичне положення точки, а також містить посилання на її сусідів у сітці (північного, східного, південного, західного), якщо такі існують. Інтерфейс повинен містити такі елементи:

  • Node.get_x - повертає х позицію точки (в м)

  • Node.get_y - повертає у позицію точки (в м)

  • Node.get_z - повертає z позицію точки (в м)

  • Node.distance(Node1, kwargs) - повертає відстань між двома точками, метрика дозволяє штрафувати висоту за допомогою kwargs

UML діаграма класів для реалізації структур даних

UML діаграма класів для реалізації ADT