Complexité de recherche de pics 2D (MIT OCW 6.006)

9

Dans une vidéo de récitation pour MIT OCW 6.006 à 43:30,

Étant donné une matrice avec colonnes et lignes, l'algorithme de recherche de pics 2D, où un pic est une valeur supérieure ou égale à ses voisins adjacents, a été décrit comme suit:m×nm nAmn

Remarque: S'il y a confusion dans la description des colonnes via , je m'excuse, mais c'est ainsi que la vidéo de récitation le décrit et j'ai essayé d'être cohérent avec la vidéo. Cela m'a beaucoup troublé.n

  1. Choisissez la colonne du milieu // A de la complexitéΘ ( 1 )n/2Θ(1)

  2. Trouver la valeur maximale de la colonne // A une complexité car il y a lignes dans une colonneΘ ( m ) mn/2Θ(m)m

  3. Vérifiez horiz. voisins de ligne de valeur maximale, si elle est supérieure, alors un pic a été trouvé, sinon récurrence avec // A la complexitéT ( n / 2 , m )T(n/2,m)T(n/2,m)

Ensuite, pour évaluer la récursivité, l'instructeur de récitation dit

T(1,m)=Θ(m) car il trouve la valeur maximale

(E1)T(n,m)=Θ(1)+Θ(m)+T(n/2,m)

Je comprends la partie suivante, à 52:09 dans la vidéo, où il dit de traiter comme une constante, car le nombre de lignes ne change jamais. Mais je ne comprends pas comment cela conduit au produit suivant:m

(E2)T(n,m)=Θ(m)Θ(logn)

Je pense que, puisque est traité comme une constante, il est donc traité comme et éliminé dans ci-dessus. Mais j'ai du mal à passer à . Est-ce parce que nous considérons maintenant le cas de avec une constante ?Θ ( 1 ) ( E 1 ) ( E 2 ) T ( n / 2 ) mmΘ(1)(E1)(E2)T(n/2)m

Je pense que "voir" l'idée générale est qu'une opération est effectuée, au pire, pour m nombre de lignes. Ce que j'essaie de comprendre, c'est comment décrire le saut de à vers quelqu'un d'autre, c'est-à-dire acquérir une réelle compréhension.( E 1 ) ( E 2 )Θ(logn)(E1)(E2)

user52207
la source

Réponses:

1

Si je comprends bien, il faut du temps à (m) pour évaluer tous les éléments d'une colonne donnée et identifier lequel de ces éléments est le maximum global. Lorsque le intervient, c'est que dans le pire des cas, l'algorithme doit évaluer les colonnes de la matrice avant de trouver un pic. Le travail total serait alorsΘ ( lg ( n ) ) lg ( n ) Θ ( m lg ( n ) )ΘΘ(lg(n))lg(n)Θ(mlg(n))

Par exemple, supposons que votre matrice comporte 32 colonnes et 8 lignes.

  1. Vous prenez la colonne du milieu, disons la colonne 16. Vous l'évaluez et constatez que le pic global de la colonne est remplacé par un élément à droite. Vous supprimez les colonnes 1-16 et vous vous concentrez sur les colonnes 17-32
  2. Trouvez la colonne du milieu de la matrice restante, qui est la colonne 24, et vous évaluez pour un pic global (c'est votre deuxième évaluation de colonne). Vous trouvez que vous devez vous déplacer vers la droite. Supprimez les colonnes 17-24, concentrez-vous sur 25-32.
  3. Trouvez le milieu (colonne 28) - vous évaluez (évaluation de la troisième colonne), et vous trouvez que vous devez vous déplacer vers la droite. Supprimez les colonnes 25 à 28 et concentrez-vous sur 29 à 32.
  4. Évaluez la colonne 30 (quatrième évaluation), trouvez que vous devez vous déplacer vers la droite, supprimez les colonnes 29-30.
  5. Évaluez l'une des colonnes restantes (évaluation de la cinquième colonne) et vous avez terminé.

Au total, vous avez effectué cinq évaluations de colonne. 5 = = où n est le nombre de colonnes dans la matrice et lg est la base logarithmique 2.lg ( n )lg(32)lg(n)

ManGI1
la source
2

l'analyse que vous décrivez semble incorrecte. la complexité correcte est où est la plus grande dimension de la matrice (lignes ou colonnes). voir cette autre analyse correcte pour plus de détails. une partie de l'erreur ne consiste pas à définir la relation de récurrence en termes de uniquement (qui est traitée correctement dans le document). le papier montre / utilise une série infinie:m T ( n , m ) T ( n , m )O(m)mT(n,m)T(n,m)

T(n)=T(n2)+cnT(n)=T(1)+cn(1+12+14+18+)=O(n)

vzn
la source
1
Cette réponse est, en fait, hors de question! L'OP parle de l'algorithme dans la vidéo de récitation MIT OCW 6.006 tandis que cette réponse parle d' un algorithme différent . En particulier, l'analyse décrite par OP est correcte par rapport à l'algorithme de cette vidéo.
John L.