AU: Cycle Breaker for directed graphs.

A new class CycleBreaker that uses Johnson's elementary circuit
finding algorithm to find cycles in a directed graph. This class goes
beyond Johnson's algorithm to also break them using a simple greedy
algorithm.

Like Johnson's elementary circuit finding algorithm, this is not
intended to find cycles that contain only one node (i.e., a node that
points to itself).

Review URL: http://codereview.chromium.org/784001
4 files changed
tree: eb79de1f5bad11fd43938285789e8f6354a10386
  1. action.h
  2. action_pipe.h
  3. action_pipe_unittest.cc
  4. action_processor.cc
  5. action_processor.h
  6. action_processor_unittest.cc
  7. action_unittest.cc
  8. bzip_extent_writer.cc
  9. bzip_extent_writer.h
  10. bzip_extent_writer_unittest.cc
  11. cycle_breaker.cc
  12. cycle_breaker.h
  13. cycle_breaker_unittest.cc
  14. decompressing_file_writer.cc
  15. decompressing_file_writer.h
  16. decompressing_file_writer_unittest.cc
  17. delta_diff_generator.cc
  18. delta_diff_generator.h
  19. delta_diff_generator_unittest.cc
  20. delta_diff_parser.cc
  21. delta_diff_parser.h
  22. delta_diff_parser_unittest.cc
  23. download_action.cc
  24. download_action.h
  25. download_action_unittest.cc
  26. extent_mapper.cc
  27. extent_mapper.h
  28. extent_mapper_unittest.cc
  29. extent_writer.cc
  30. extent_writer.h
  31. extent_writer_unittest.cc
  32. file_writer.cc
  33. file_writer.h
  34. file_writer_unittest.cc
  35. filesystem_copier_action.cc
  36. filesystem_copier_action.h
  37. filesystem_copier_action_unittest.cc
  38. filesystem_iterator.cc
  39. filesystem_iterator.h
  40. filesystem_iterator_unittest.cc
  41. gen_coverage_html.sh
  42. generate_delta_main.cc
  43. graph_types.h
  44. graph_utils.cc
  45. graph_utils.h
  46. graph_utils_unittest.cc
  47. gzip.cc
  48. gzip.h
  49. gzip_unittest.cc
  50. http_fetcher.h
  51. http_fetcher_unittest.cc
  52. install_plan.h
  53. integration_unittest.cc
  54. libcurl_http_fetcher.cc
  55. libcurl_http_fetcher.h
  56. local_coverage_rate.sh
  57. main.cc
  58. mock_file_writer.h
  59. mock_http_fetcher.cc
  60. mock_http_fetcher.h
  61. omaha_hash_calculator.cc
  62. omaha_hash_calculator.h
  63. omaha_hash_calculator_unittest.cc
  64. omaha_request_prep_action.cc
  65. omaha_request_prep_action.h
  66. omaha_request_prep_action_unittest.cc
  67. omaha_response_handler_action.cc
  68. omaha_response_handler_action.h
  69. omaha_response_handler_action_unittest.cc
  70. postinstall_runner_action.cc
  71. postinstall_runner_action.h
  72. postinstall_runner_action_unittest.cc
  73. SConstruct
  74. set_bootable_flag_action.cc
  75. set_bootable_flag_action.h
  76. set_bootable_flag_action_unittest.cc
  77. subprocess.cc
  78. subprocess.h
  79. subprocess_unittest.cc
  80. tarjan.cc
  81. tarjan.h
  82. tarjan_unittest.cc
  83. test_http_server.cc
  84. test_http_server.py
  85. test_installer_main.cc
  86. test_utils.cc
  87. test_utils.h
  88. testrunner.cc
  89. update_check_action.cc
  90. update_check_action.h
  91. update_check_action_unittest.cc
  92. update_metadata.proto
  93. utils.cc
  94. utils.h
  95. utils_unittest.cc