Trouver un minimum local en x n n la matrice en O(n) fois

Donc, ce n'est pas mon travail à domicile question, mais il est pris à partir de l'option devoirs de la coursera cours sur les algorithmes et structures de données (qui est maintenant terminée).

Vous êtes donné un n par n grille de numéros distincts. Un nombre est un minimum local si elle est plus petite que celle de tous ses voisins. (Un voisin d'un nombre est l'un immédiatement au-dessus, au-dessous, vers la gauche ou la droite. La plupart des numéros ont quatre voisins; les numéros sur le côté en ont trois, quatre coins ont deux.) Utiliser le diviser et conquérir la conception d'un algorithme de paradigme pour calculer un minimum local, avec seulement O(n) les comparaisons entre les paires de nombres. (Note: depuis il y a n2 numéros dans l'entrée, vous ne pouvez pas se permettre de regarder tous. Astuce: Pensez à ce type de récidives serait le niveau désiré de la limite supérieure.)

Étant donné que les numéros ne sont pas dans n'importe quel ordre, je ne vois pas comment on peut s'en tirer avec quelque chose, mais O(n2) comparaisons.

  • Le faire dans O(log(n)) ou O(n) ?
  • Il y a n^2 éléments, de sorte que O(n) sera génial. Bien sûr, en O(log(n)) serait génial si possible
  • Nous avons également besoin d'être prudent sur ce n est. D'abord, vous avez dit n était le nombre de lignes et de colonnes qui signifie qu'il ya n^2 numéros. Chaque numéro a environ 4 voisins il y a donc à peu près 4*n^2/2 paires, oui? En termes de m étant le nombre de paires si nous sommes censés le faire dans O(m) alors que c'est O(n^2). Aussi, nous sommes juste de l'informatique en un seul minimum local n'est pas le moindre élément?
  • Oui, il pourrait y avoir un double comptage dans le 4*n^2/2, mais je pense qu'il est toujours en O(n^2). Et oui, nous voulons juste un seul minimum local, pas global.
  • J'ai édité le titre de cette question pour correspondre à son contenu. Il n'y a rien au sujet de "log n" ici, à tous. La question est en fait très clair. Je ne le sais pas encore, cependant.
InformationsquelleAutor Rohit Pandey | 2013-08-30