algorithms: export from google3

This commit is contained in:
Corentin Le Molgat
2024-03-11 09:44:47 +01:00
parent 4294982e9b
commit ca1fe30f91
4 changed files with 131 additions and 10 deletions

View File

@@ -11,9 +11,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
load("@rules_proto//proto:defs.bzl", "proto_library")
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_proto_library")
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
package(default_visibility = ["//visibility:public"])
@@ -127,6 +127,20 @@ cc_test(
],
)
cc_library(
name = "duplicate_remover",
srcs = ["duplicate_remover.cc"],
hdrs = ["duplicate_remover.h"],
deps = [
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/numeric:bits",
"@com_google_absl//absl/random",
"@com_google_absl//absl/random:distributions",
"@com_google_absl//absl/types:span",
"@com_google_protobuf//:protobuf",
],
)
# Hungarian algorithm
cc_library(
name = "hungarian",
@@ -167,20 +181,69 @@ cc_library(
"//conditions:default": [],
}),
deps = [
"//ortools/base",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/time",
"//ortools/base:stl_util",
# We don't link any underlying solver to let the linear_solver_knapsack
# decide what solvers to include.
"//ortools/linear_solver",
"//ortools/sat:cp_model",
"//ortools/sat:cp_model_cc_proto",
"//ortools/sat:cp_model_solver",
"//ortools/util:bitset",
"//ortools/util:time_limit",
],
)
# Weighted set covering
cc_test(
name = "knapsack_solver_test",
size = "medium",
srcs = ["knapsack_solver_test.cc"],
deps = [
":knapsack_solver_lib", # buildcleaner: keep
"//ortools/base",
"//ortools/base:gmock_main",
"//ortools/util:time_limit",
],
)
cc_library(
name = "knapsack_solver_for_cuts",
srcs = ["knapsack_solver_for_cuts.cc"],
hdrs = ["knapsack_solver_for_cuts.h"],
deps = [
"//ortools/base",
"//ortools/base:int_type",
"//ortools/util:time_limit",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/types:span",
],
)
cc_test(
name = "knapsack_solver_for_cuts_test",
size = "medium",
srcs = ["knapsack_solver_for_cuts_test.cc"],
deps = [
":knapsack_solver_for_cuts",
"//ortools/base:gmock",
"//ortools/base:gmock_main",
],
)
# Partitioning and splitting of vector<int64_t>.
# query matching library.
# Weighted set covering library.
proto_library(
name = "set_cover_proto",
srcs = ["set_cover.proto"],
deps = ["//ortools/util:int128_proto"],
deps = [
"//ortools/util:int128_proto",
],
)
cc_proto_library(
@@ -209,7 +272,6 @@ cc_library(
":set_cover_cc_proto",
":set_cover_model",
"//ortools/base",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/types:span",
@@ -258,6 +320,21 @@ cc_library(
],
)
cc_library(
name = "set_cover_reader",
srcs = ["set_cover_reader.cc"],
hdrs = ["set_cover_reader.h"],
deps = [
":set_cover_model",
"//ortools/base:file",
"//ortools/util:filelineiter",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
],
)
cc_test(
name = "set_cover_test",
size = "medium",
@@ -291,7 +368,6 @@ cc_library(
srcs = ["dynamic_partition.cc"],
hdrs = ["dynamic_partition.h"],
deps = [
"//ortools/base",
"//ortools/base:murmur",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/strings",
@@ -300,6 +376,19 @@ cc_library(
],
)
cc_test(
name = "dynamic_partition_test",
srcs = ["dynamic_partition_test.cc"],
deps = [
":dynamic_partition",
"//ortools/base:gmock_main",
"//ortools/base:stl_util",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/random",
"@com_google_absl//absl/random:bit_gen_ref",
],
)
cc_library(
name = "sparse_permutation",
srcs = ["sparse_permutation.cc"],
@@ -307,6 +396,18 @@ cc_library(
deps = [
"//ortools/base",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/types:span",
],
)
cc_test(
name = "sparse_permutation_test",
srcs = ["sparse_permutation_test.cc"],
deps = [
":sparse_permutation",
"//ortools/base:gmock_main",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/random:distributions",
],
)
@@ -339,7 +440,6 @@ cc_library(
":dynamic_partition",
":dynamic_permutation",
":sparse_permutation",
"//ortools/base",
"//ortools/base:dump_vars",
"//ortools/base:murmur",
"//ortools/graph",
@@ -368,13 +468,15 @@ cc_test(
":dynamic_permutation",
":find_graph_symmetries",
":sparse_permutation",
"//ortools/base",
"//ortools/base:dump_vars",
"//ortools/base:file",
"//ortools/base:gmock_main",
"//ortools/base:map_util",
"//ortools/base:path",
"//ortools/graph:io",
"//ortools/graph:random_graph",
"//ortools/graph:util",
"@com_google_absl//absl/numeric:bits",
"@com_google_absl//absl/random",
"@com_google_absl//absl/random:distributions",
"@com_google_absl//absl/status:statusor",
@@ -383,3 +485,20 @@ cc_test(
"@com_google_absl//absl/types:span",
],
)
cc_library(
name = "binary_indexed_tree",
hdrs = ["binary_indexed_tree.h"],
deps = [
"@com_google_absl//absl/log:check",
],
)
cc_test(
name = "binary_indexed_tree_test",
srcs = ["binary_indexed_tree_test.cc"],
deps = [
":binary_indexed_tree",
"//ortools/base:gmock_main",
],
)

View File

@@ -19,6 +19,7 @@
#include <functional>
#include <limits>
#include <utility>
#include <vector>
#include "absl/base/log_severity.h"
#include "absl/numeric/int128.h"

View File

@@ -1282,7 +1282,7 @@ int64_t KnapsackMIPSolver::Solve(TimeLimit* /*time_limit*/,
// ----- KnapsackCpSat -----
class KnapsackCpSat : public BaseKnapsackSolver {
public:
explicit KnapsackCpSat(const std::string& solver_name);
explicit KnapsackCpSat(absl::string_view solver_name);
// Initializes the solver and enters the problem to be solved.
void Init(const std::vector<int64_t>& profits,
@@ -1305,7 +1305,7 @@ class KnapsackCpSat : public BaseKnapsackSolver {
std::vector<bool> best_solution_;
};
KnapsackCpSat::KnapsackCpSat(const std::string& solver_name)
KnapsackCpSat::KnapsackCpSat(absl::string_view solver_name)
: BaseKnapsackSolver(solver_name),
profits_(),
weights_(),

View File

@@ -14,6 +14,7 @@
#include "ortools/algorithms/set_cover_mip.h"
#include <cstdint>
#include <limits>
#include "absl/types/span.h"
#include "ortools/algorithms/set_cover_invariant.h"