de implementar ➔ Difícil de testar ➔ Difícil de explicar O(n) [2] a 11 0 2 b 5 1 1 a 10 0 2 a 9 1 2 c 2 2 1 # 0 1 1 c 3 1 1 b 8 0 2 b 1 3 1 a 7 1 2 a 4 0 1 # 6 2 2 S 1 S 2 SA LCP O
é difícil de acertar na prática ➔ Muitos border cases ➔ Alfabeto Unicode é grande demais. 1http://www.cs.cmu.edu/~guyb/realworld/papersS04/KaSa03.pdf 2https://www.cs.helsinki.fi/u/ukkonen/SuffixT1withFigs.pdf [2] a 11 0 2 b 5 1 1 a 10 0 2 a 9 1 2 c 2 2 1 # 0 1 1 c 3 1 1 b 8 0 2 b 1 3 1 a 7 1 2 a 4 0 1 # 6 2 2 S 1 S 2 SA LCP O
milhão de coisas por segundo. No melhor caso, cem milhões. Acima disso, só C. PS: nunca escreva isso num artigo se você tem amor a sua reputação acadêmica. Rule of thumb. Sacou? Sacou?
you think solution Y would work, but instead of asking about X when you run into trouble, you ask about Y.” http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem X Y
3 4 5 6 Heaps são importantes No StackOverflow: “Most efficient algorithm for merging sorted IEnumerable<T>” A resposta aceita é O(nk). Usando uma heap seria O(nlogk). http://stackoverflow.com/questions/2767007/most-efficient-algorithm-for- merging-sorted-ienumerablet
colocada numa heap e a thread agendadora pode dormir enquanto a tarefa mais próxima (verificada em O(1)) não chegar. Exemplo: https://gist.github.com/juanplopes/8cf51044bb873bbaf737
a interface consegue plotar sem sofrer slowdown. Por isso, é preciso escolher os pontos mais importantes. Um algoritmo possível considera pontos que contribuem para a entropia do gráfico1,2. 1http://thescipub.com/PDF/jcssp.2010.1389.1395.pdf 2http://www.academia.edu/1578716/Aplica%C3%A7%C3% A3o_do_algoritmo_Perceptually_Important_Points_em_s%C3% A9ries_temporais_de_datacenters
heap não permite a operação change-key, tornando o seu uso em alguns algoritmos mais difícil. Se precisar, implemente você mesmo uma heap que suporte essa operação. Vale para qualquer algoritmo. YES, YOU CAN
linguagens é ruim1, tornando exponenciais mesmo expressões que poderiam ser tratadas com algoritmos polinomiais. 1http://swtch.com/~rsc/regexp/regexp1.html /regexp?/
dados é grande demais para um algoritmo exato, lembre-se sempre dos algoritmos randomizados. http://www.infoq.com/br/presentations/analisando-fluxo-dados-tempo-real