Finish specialization
This commit is contained in:
@@ -5,3 +5,5 @@ by Tim Roughgarden from the Stanford University. I implemented the assignments
|
||||
in Rust to learn more about the language. I took the class to refresh my
|
||||
knowledge about algorithms.
|
||||
|
||||
[Certificate](https://coursera.org/share/8af17a8221800221c68a8d7bfb69fd88)
|
||||
|
||||
|
||||
@@ -170,6 +170,7 @@ fn c4a3() {
|
||||
let g = util::read_tsp_graph("data/c4a3_tsp.txt").unwrap();
|
||||
let r = tsp_heuristic(g);
|
||||
println!("r = {}", r);
|
||||
// r = 1203406
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
@@ -180,6 +181,7 @@ fn c4a4() {
|
||||
let r = sat2(s);
|
||||
println!("{} = {}", f, r);
|
||||
}
|
||||
// r = 101100
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -25,13 +25,14 @@ fn get_random_assignment(n_clauses: usize) -> Vec<bool> {
|
||||
|
||||
pub fn sat2(s: Sat2) -> bool {
|
||||
let n_clauses: f64 = s.n_clauses as f64;
|
||||
let outer_repeats: usize = n_clauses.log(2.0).ceil() as usize;
|
||||
let inner_repeats: usize = 2 * s.n_clauses * s.n_clauses;
|
||||
let outer_repeats: usize = n_clauses.log(2.0).ceil() as usize;
|
||||
let inner_repeats: usize = 2 * s.n_clauses;
|
||||
let mut rng = rand::thread_rng();
|
||||
|
||||
for _ in 0..outer_repeats {
|
||||
let mut a = get_random_assignment(s.n_clauses);
|
||||
for _ in 0..inner_repeats {
|
||||
let mut i = 0;
|
||||
while i < inner_repeats {
|
||||
let mut valid = true;
|
||||
for c in &s.clauses {
|
||||
if a[c.v1] == c.n1 || a[c.v2] == c.n2 {
|
||||
@@ -45,7 +46,7 @@ pub fn sat2(s: Sat2) -> bool {
|
||||
a[c.v2] = !a[c.v2];
|
||||
}
|
||||
valid = false;
|
||||
break;
|
||||
i += 1;
|
||||
}
|
||||
}
|
||||
if valid {
|
||||
|
||||
Reference in New Issue
Block a user