Удаление из кучи мин со сложностью. (Java) - PullRequest
0 голосов
/ 21 апреля 2020

Я работаю над заданием, в котором используется минимальная куча. Удаление одного элемента очень просто.

Это мой текущий код

Item temporary = heap[0];
heap[0] = heap[--size];
heap[size] = null;
bubbleDown(0);
return temporary;

Это мой метод bubbleDown (индекс)

    if(isLeaf(index)) {
  return;
}

int minChild = index;
int left = getLeftIndex(index);
int right = getRightIndex(index);
if(right > heap.length) {
  minChild = left;
}
else {
  if(this.heap[left].compareTo(heap[index]) > 0) {
    minChild = left;
  }
  if(this.heap[right].compareTo(heap[minChild]) < 0){
    minChild = right;
  }
}
if(minChild != index) {

  swap(index, minChild);

  bubbleDown(minChild);
}

Это работает правильно, чтобы просто удалить один элемент. Проблема заключается в том, что объекты, хранящиеся и удаляемые из кучи, должны напоминать доставку между драйверами и местоположениями. Таким образом, если бы в разных местах было 2 водителя доставки и 2 клиента, то было бы 4 возможных пары доставки, и сначала был бы удален один из них с наивысшим приоритетом. Но когда это удаляется, а не остается 3 возможных доставки, остается только 1, потому что есть только один драйвер и одно местоположение. Я понятия не имею, как начать реализацию этого. Советы / идеи будут оценены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...