Yeah I get that you have to tweak canonical algorithms to suit the current problem but I am thinking more about developing algo for open problems or improving the performance at research level. Also, are algorithms beyond basic ones like shortest path, a* search and network flow are ever needed in real world situations? They all seem done and dusted pretty much.