For faster navigation, this Iframe is preloading the Wikiwand page for Problema da bandeira dos Países Baixos.

Problema da bandeira dos Países Baixos

Bandeira da Holanda.

O problema da bandeira da Holanda é um desafio de programação proposto por Edsger Dijkstra em 1976 relacionado a algoritmos de ordenamento. Supõe-se que numa urna sejam postas bolas pintadas de azul, vermelho ou branco (cores da bandeira da Holanda) em qualquer quantidade, desde que haja uma de cada cor. O problema propõe que o algoritmo deva ser capaz de agrupar todas as bolas de uma mesma cor em sequência e as sequências de cores estejam ordenadas. Desta maneira, no vetor ordenado das bolas desta urna estariam posicionadas primeiro todas as vermelhas, depois todas as brancas e, por fim, todas as azuis. No entanto, o algoritmo é limitado a acessar a cor de cada bola apenas uma única vez, visando a um menor número de comparações, acessos e, por conseguinte, um crescimento assintótico menos punitivo.[1]

A maioria das respostas deste desafio é bastante familiar com o algoritmo do quicksort. Segue a solução proposta (adaptada) pelo próprio Dijkstra[2]:

vetor urna[N]  // sendo N o tamanho do array
ver = 1, bra = N, azu = N
// ver é o índice do último elemento da sequência de bolas vermelhas
// bra é o índice do último elemento da sequência de bolas brancas
// azu é o índice do primeiro elemento da sequência de bolas azuis 

enquanto b >= v:
    cor = checar cor de urna[bra]
    se cor é vermelha:
        trocar(urna[ver], urna[bra])
        ver = ver + 1
    senao-se cor é branca:
        bra = bra - 1
    senao-se cor é azul:
        trocar(urna[bra], urna[azul])
        bra = bra - 1
        azu = azu - 1

Referências

  1. Chen, Wei-Mei (2004). Probabilistic analysis of algorithms for the Dutch national flag problem (Tese) (em inglês). Taipé: Universidade de Tatung. Consultado em 14 de fevereiro de 2022 
  2. Dijkstra, Edsger (1976). A Discipline of Programming. Nova Jérsia: Prentice Hall. p. 114. ISBN 013215871X 
{{bottomLinkPreText}} {{bottomLinkText}}
Problema da bandeira dos Países Baixos
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?