Je pense que la première chose à considérer est ce qu'est une opération prise en charge?
Est-ce que "l'insertion d'une valeur avec une clé fixe spécifique" (par exemple pour les clés extraites du domaine entier, l'insertion avec la clé = 3) correspond à une opération prise en charge pour le segment min?
Non, car cette opération peut être implémentée de manière triviale avec des opérations prises en charge plus générales. De même, l'insertion de 2 éléments à la fois peut être effectuée avec l' insert
opération existante .
D'un autre côté, l' insert
opération ne peut pas être définie autrement qu'en exposant les détails de l'implémentation. C'est à peu près la même chose pour les opérations répertoriées sur la page wikipedia, heapify
sauf, qui pourraient probablement être implémentées par une séquence de insert
.
En d'autres termes, il existe des opérations élémentaires fournies sur le type, qui sont étroitement liées aux détails de mise en œuvre pour qu'elles fonctionnent correctement, et il existe d'autres opérations, qui ne respectent pas cette règle, et peuvent donc être mises en œuvre en tant que combinaisons des canoniques.
Avec cette définition à l'esprit, pensez-vous que l'augmentation-clé pourrait être implémentée avec d'autres opérations prises en charge exclusivement, sans perte de performances? Si c'est le cas, alors ce n'est pas une opération prise en charge par la définition ci-dessus, sinon, vous pourriez bien avoir raison.
On peut dire que la définition d'une opération soutenue que je fournis est la mienne, pour autant que je sache. Ce n'est pas formel et donc sujet à discussion (même si cela me semble assez clair). Cependant, je serais heureux si quelqu'un pouvait fournir une source qui définisse clairement et sans ambiguïté ce qu'est une opération prise en charge pour les types de données, ou au moins la définit en de meilleurs termes que la mienne (cette définition est-elle donnée dans CLR? Je n'ai pas de copie ).
Mon deuxième point sera sur la façon dont nous définissons une file d'attente prioritaire (qui est la raison d'être des tas binaires). L' increase_key
opération est-elle nécessaire pour ce type de données, c'est-à-dire pour sa bonne utilisation?
Comme vous pouvez le voir, mon angle est axé sur les définitions. Je ne donne pas vraiment de réponse à vos questions, je me contente de quelques conseils, les améliorations sont donc les bienvenues.