Я работаю над алгоритмом ветвления и привязки для задачи коммивояжера и столкнулся с небольшим затруднением.Я использую довольно стандартную очередь с узлами, представляющими подмножества вершин (путей).Я почти уверен, что у меня все продумано, но на данный момент у меня есть открытый класс Queue, а под ним - закрытый класс Node со всеми его свойствами: текущий путь, нижняя граница и т. Д.
Однако в моей основной программе я инициализирую Очередь узлов и создаю два начальных узла, но получаю сообщение об ошибке «Узел не может быть преобразован в тип».Я предположил, что это потому, что он был внутри класса Queue и недоступен для основной программы, но когда я перемещаю его, я везде получаю ошибки в элементах, которые подключены к узлу.имеет смысл, я не уверен, как еще это объяснить, но все остальное вроде бы хорошо.Вот фрагмент моего кода для пояснения:
`public class Queue<Item> implements Iterable<Item> {
private int N; // number of elements on queue
private Node first; // beginning of queue
private Node last; // end of queue
// helper linked list class
public class Node {
public int level; //level on the tree
public int[] path; //current path
public int bound; //lower bound
public Item item;
public Node next; //the next in the path
public boolean inPath; //checks to see if the vertex is in the current path
public int missingV; //the vertex that is missing from the path
}`
Вот где я объявляю класс Node, и именно здесь я фактически использую его в своей основной программе:
`public static void main(String args[]) {
int n = 4;
int[][] W = new int[][] {{0,2,4,7},{2,0,7,3},{4,7,0,5},{6,3,5,0}};
int[] opttour;
Queue<Node> PQ = new Queue<Node>();
Node u = new Node();
Node v = new Node();`