problemreductions/rules/
maximumindependentset_casts.rs1use crate::impl_variant_reduction;
7use crate::models::graph::MaximumIndependentSet;
8use crate::topology::{KingsSubgraph, SimpleGraph, TriangularSubgraph, UnitDiskGraph};
9use crate::types::One;
10use crate::variant::CastToParent;
11
12impl_variant_reduction!(
13 MaximumIndependentSet,
14 <KingsSubgraph, i32> => <UnitDiskGraph, i32>,
15 fields: [num_vertices, num_edges],
16 |src| MaximumIndependentSet::new(
17 src.graph().cast_to_parent(), src.weights().to_vec())
18);
19
20impl_variant_reduction!(
21 MaximumIndependentSet,
22 <TriangularSubgraph, i32> => <UnitDiskGraph, i32>,
23 fields: [num_vertices, num_edges],
24 |src| MaximumIndependentSet::new(
25 src.graph().cast_to_parent(), src.weights().to_vec())
26);
27
28impl_variant_reduction!(
29 MaximumIndependentSet,
30 <UnitDiskGraph, i32> => <SimpleGraph, i32>,
31 fields: [num_vertices, num_edges],
32 |src| MaximumIndependentSet::new(
33 src.graph().cast_to_parent(), src.weights().to_vec())
34);
35
36impl_variant_reduction!(
38 MaximumIndependentSet,
39 <KingsSubgraph, One> => <UnitDiskGraph, One>,
40 fields: [num_vertices, num_edges],
41 |src| MaximumIndependentSet::new(
42 src.graph().cast_to_parent(), src.weights().to_vec())
43);
44
45impl_variant_reduction!(
46 MaximumIndependentSet,
47 <UnitDiskGraph, One> => <SimpleGraph, One>,
48 fields: [num_vertices, num_edges],
49 |src| MaximumIndependentSet::new(
50 src.graph().cast_to_parent(), src.weights().to_vec())
51);
52
53impl_variant_reduction!(
55 MaximumIndependentSet,
56 <SimpleGraph, One> => <SimpleGraph, i32>,
57 fields: [num_vertices, num_edges],
58 |src| MaximumIndependentSet::new(
59 src.graph().clone(), src.weights().iter().map(|w| w.cast_to_parent()).collect())
60);
61
62impl_variant_reduction!(
63 MaximumIndependentSet,
64 <KingsSubgraph, One> => <KingsSubgraph, i32>,
65 fields: [num_vertices, num_edges],
66 |src| MaximumIndependentSet::new(
67 src.graph().clone(), src.weights().iter().map(|w| w.cast_to_parent()).collect())
68);
69
70impl_variant_reduction!(
71 MaximumIndependentSet,
72 <UnitDiskGraph, One> => <UnitDiskGraph, i32>,
73 fields: [num_vertices, num_edges],
74 |src| MaximumIndependentSet::new(
75 src.graph().clone(), src.weights().iter().map(|w| w.cast_to_parent()).collect())
76);