
Program Plan:
- Create a package “main”.
- Add a java class named “Edge” to the package which is used to get the edges from the graph.
- Add a java class named “Graph” to the package which is used to add and remove vertices, edges.
- Add a java class named “UnweightedGraph” to the package which is used to store vertices and neighbors.
- Add a java class named “WeightedGraph” to the package which is used to get the weighted edges and print the edges.
- Add a java class named “WeightedEdge” to the package which is used to compare edges.
- Add a java class named “NineTailModel” to the package which is used to compare edges.
- Add a java class named “Test” to the package.
- Import the required packages.
- Declare the main class.
- Give the “main ()” method.
- Allocate the memory for the “Test” class.
- Define “Test”.
- Get the initial nine coins from the user.
- Create an object for the “ModifiedWeightedNineTailModel” class.
- Create an array list.
- Display the steps to flip the coin.
- Display the number of flips.
- Define “ModifiedWeightedNineTailModel” class.
- Create an edges and graph.
- Obtain a BSF tree rooted at the target node.
- Define “getEdges” method.
- Create an array list.
- Create all the edges for the graph by calling “getFlippedNode” and “getNumberOfFlips” methods.
- Add edge for a legal move from the node u to v.
- Return the edge.
- Define “getNumberOfFlips” method.
- Declare the required variables.
- Check if the “node1” is not equal to “node2” means increment the “count”.
- Return the value.
- Define “getNumberOfFlips” method.
- Return the total number of flips.
- Give the “main ()” method.
The given program is used to modify weight in the nine tails problem is as follows:
Explanation of Solution
Program:
Edge.java: Refer book from chapter 28 – Listing 28.1.
Graph.java: Refer book from chapter 28 – Listing 28.3.
UnweightedGraph.java: Refer book from chapter 28 – Listing 28.4.
WeightedGraph.java: Refer book from chapter 29 – Listing 29.2.
WeightedEdge.java: Refer book from chapter 29 – Listing 29.1.
NineTailModel.java: Refer book from chapter – Listing 28.13.
Test.java:
//import the required statement
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
//definition of "Test" class
public class Test
{
//main method
public static void main(String[] args)
{
//memory allocation
new Test();
}
//definition of "Test"
public Test()
{
// get the input from the user
System.out.print("Enter an initial nine coin H’s and T's: ");
Scanner input = new Scanner(System.in);
String s = input.nextLine();
//declare the variable
char[] initialNode = s.toCharArray();
//create an object
ModifiedWeightedNineTailModel model = new ModifiedWeightedNineTailModel();
//create an ArrayList
java.util.List<Integer> path =
model.getShortestPath (NineTailModel.getIndex(initialNode));
//display the steps to flip the coin
System.out.println("The steps to flip the coins are ");
for (int i = 0; i < path.size(); i++)
NineTailModel.printNode(
NineTailModel.getNode (path.get(i).intValue()));
//display the number of flips
System.out.println("The number of flips is " +
model.getNumberOfFlips (NineTailModel.getIndex(initialNode)));
}
//definition of "ModifiedWeightedNineTailModel"
public static class ModifiedWeightedNineTailModel extends NineTailModel
{
//constructor
public ModifiedWeightedNineTailModel()
{
// create edges
List<WeightedEdge> edges = getEdges();
// create a graph
WeightedGraph<Integer> graph = new WeightedGraph<Integer>(
edges, NUMBER_OF_NODES);
/* obtain a BSF tree rooted at the target node*/
tree = graph.getShortestPath(511);
}
//definition of "getEdge" method
private List<WeightedEdge> getEdges()
{
// create an ArrayList
List<WeightedEdge> edges = new ArrayList<WeightedEdge>();
//check the condition
for (int u = 0; u < NUMBER_OF_NODES; u++)
{
//check the condition
for (int k = 0; k < 9; k++)
{
// get the node for vertex u
char[] node = getNode(u);
//check the condition
if (node[k] == 'H')
{
/*call the "getFlippedNode" method*/
int v = getFlippedNode(node, k);
int numberOfFlips = getNumberOfFlips(u, v);
/* add edge for a legal move from node u to node v*/
edges.add(new WeightedEdge(v, u, numberOfFlips));
}
}
}
//return statement
return edges;
}
//definition of "getNumberOfFlips" method
private static int getNumberOfFlips(int u, int v)
{
//declare the variables
char[] node1 = getNode(u);
char[] node2 = getNode(v);
int count = 0;
//check the condition
for (int i = 0; i < node1.length; i++)
//check the condition
if (node1[i] != node2[i]) count++;
//return statement
return 3 * count;
}
//definition of "getNumberOfFlips" method
public int getNumberOfFlips(int u)
{
//return statement
return (int)((WeightedGraph<Integer>.ShortestPathTree)tree).getCost(u);
}
}
}
Enter an initial nine coin H’s and T's: HHHTTTHHH
The steps to flip the coins are
HHH
TTT
HHH
HHH
THT
TTT
TTT
TTT
TTT
The number of flips is 24
Want to see more full solutions like this?
Chapter 29 Solutions
Introduction to Java Programming and Data Structures, Comprehensive Version Plus MyProgrammingLab with Pearson EText -- Access Card Package
Additional Engineering Textbook Solutions
Starting Out with Programming Logic and Design (5th Edition) (What's New in Computer Science)
Computer Science: An Overview (13th Edition) (What's New in Computer Science)
Mechanics of Materials (10th Edition)
Starting Out with Java: From Control Structures through Objects (7th Edition) (What's New in Computer Science)
Modern Database Management
Java How to Program, Early Objects (11th Edition) (Deitel: How to Program)
- Need help writing code to answer this question in Python! (image attached)arrow_forwardNeed help with python code! How do I simplify my code for a beginner to understand, simple fixed format and centering? Such as: print(f"As an int variable: {age_int:^7}") print(f"In numeric binary: {age_int:^7b}") My Code:name = input("Enter your name: ")print(f"In text name is: {' '.join(name)}")decimal_values = []binary_values = []for letter in name: ascii_val = ord(letter) binary_val = format(ascii_val, '08b') decimal_values.append(str(ascii_val)) binary_values.append(binary_val)# Loop through each letter:print(f"In ASCII decimal: {' '.join(decimal_values)}")print(f"In ASCII binary: {' '.join(binary_values)}")# Ageage_str = input("Enter your age: ")age_int = int(age_str)print(f"As a string \"{age_str}\": {' '.join(age_str)}")age_decimal_values = []age_binary_values = []for digit in age_str: ascii_val = ord(digit) binary_val = format(ascii_val, '07b') age_decimal_values.append(str(ascii_val)) age_binary_values.append(binary_val)print(f"In ASCII decimal: {'…arrow_forwardDon't use chatgpt or any other AIarrow_forward
- Don't use chatgpt or any other AIarrow_forwardGiven a relation schema R = (A, B, C, D, E,G) with a set of functional dependencies F {ABCD BC → DE B→ D D→ A}. (a) Show that R is not in BCNF using the functional dependency A → BCD. (b) Show that AG is a superkey for R (c) Compute a canonical cover Fc for the set of functional dependencies F. Show your work. (d) Give a 3NF decomposition of R based on the canonical cover found in (c). Show your work. (e) Give a BCNF decomposition of R using F. Show your work.arrow_forwardThe following entity-relationship (ER) diagram models a database that helps car deal- ers maintain records of customers and cars in their inventory. Construct a relational database schema from the ER diagram. Your set of schemas should include primary-key and foreign-key constraints and you should ensure there are no redundant schemas. has_model model modelID name vehicle has_vehicle VIN dealer_ID brand name has_available_option has_option has_dealer options options_ID specification dealer dealer ID name customer_ID owned_by customer customer ID namearrow_forward
- A relation schema R = (A, B, C, D, E) with a set of functional dependencies F= {D A CAB} is decomposed into R₁ = (A, B, C) and R2 = (C, D, E). (a) Is this a lossless-join decomposition? Why or why not? (b) Is the decomposition dependency preserving? Why or why not?arrow_forwardNo chatgpt pleasearrow_forwardPlease help draw alu diagraarrow_forward
- 1. Level the resources (R) for the following network. Show exactly which activity is being moved at each cycle and how many days it is being moved. Show all cycles required to utilize the free float and the back float. B H 3 3 L 2 0-0-0 A C F G K N P Q T 0 3 2 2 1 2-2-2 7R 8R 4R 6R 4R 2R 5R 4R D 1 2R 2 M 000 4R 2 4R 1 2 3 4 B5 B BE B 5 5 7 D 2003 C NO C MBSCM В H 5 2 F 7 7 8 SH2F80 5 Н Н 6 7 7L3G4+ 6H2G4 J 4 4 14 8 L K 00 36 9 10 11 12 13 14 15 P 2 Z+ N N 4 4 Z t 2334 4 Σ + M M 4 +arrow_forward2. Perform resource allocation for the following project. Resource limits are 6 labors and 2 helpers. Legend: Activity Dur Resources G H 2 3 2L 1H 2L OH A 1 3L 1H + B D F J K 3 4 6 2 4 4L 2H 3L OH 4L 1H 2L 2H 4L 2H C E 2 2 I 1 2L 1H 3L 1H 5L 1Harrow_forwardNeed Java method please. Thank you.arrow_forward
C++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology Ptr
C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage Learning
Microsoft Visual C#Computer ScienceISBN:9781337102100Author:Joyce, Farrell.Publisher:Cengage Learning,


