Java의 그래프 구현 예
2417 단어 careertutorialjavadatastructures
이 예는 흥미롭고 해결하기 어려운 문제입니다. 먼저 문제 자체와 Java에서 이를 해결할 수 있는 가능한 방법을 소개하겠습니다.
문제
배달 서비스 회사는 고객 주문을 배달하기 위해 배달 트럭의 경로를 계획하는 시스템을 만듭니다. 플래너는 그리드로 추상화된 각 주문에 대한 배송 영역을 생성합니다. 문제는 트럭이 주문을 배달하는 경로를 찾는 알고리즘을 작성하는 것입니다.
배송 지역은 정수의 2차원 그리드로 표시되며 여기서는 다음과 같습니다.
이 연습은 올바른 데이터 구조를 사용하여 겉보기에 복잡한 문제를 훨씬 더 간단한 문제로 바꾸는 방법을 Java에서 보여주는 훌륭한 예입니다. 그래프 구현을 사용하면 문제가 더 간단해집니다.
시작하기 전에 고려해야 할 몇 가지 사항. 트럭은 그리드를 떠날 수 없으며 접근 가능한 영역을 통해 주문 목적지에 도착해야 합니다. 그리고 트럭은 한 번에 한 셀 위, 아래, 왼쪽 또는 오른쪽으로 이동할 수 있습니다.
다음은 입력 및 해당 출력이 있는 다양한 사례의 몇 가지 예입니다.
Example 1
grid = [[1,1,0],[0,1,2][0,1,1]]
Output: [0,0][0,1][1,1][2,1][2,2][1,2]
Example 2
grid = [[1,1,1,1],[0,1,0,1],[0,1,0,1],[0,1,1,0],[0,1,2,1]]
Output: [0,0][0,1][1,1][2,1][3,1][3,2]
해결책
이 문제에 대한 최상의 솔루션은 자바 그래프 구현을 사용하는 것입니다. 일반적으로 그래프는 그리드를 탐색해야 하는 모든 상황에 적합한 솔루션입니다.
이 솔루션에는 각 매트릭스 셀을 나타내는
Cell
클래스와 트럭이 탐색해야 하는 영역을 나타내는 DeliveryArea
클래스의 두 가지 클래스가 있습니다. 아래 스켈레톤, 클래스 및 메소드 서명만 참조하십시오. 다음 섹션에서 구현을 완료합니다.public class Cell {
public int row;
public int col;
public Cell(int row, int col){
this.row = row;
this.col = col;
}
public String hashKey(){
return String.valueOf(this.row)+String.valueOf(this.col);
}
}
import java.util.List;
import java.util.Map;
public class DeliveryArea {
private final static int ACCESSIBLE_CELL = 1;
private final static int NON_ACCESSIBLE_CELL = 0;
private final static int DESTINATION = 2;
public int[][] matrix;
public DeliveryArea(int[][] matrix){
this.matrix = matrix;
}
private Map<String, List<Cell>> buildGraph(){
return null;
}
public List<Cell> findRoute(){
return null;
}
}
Check out the full solution
Reference
이 문제에 관하여(Java의 그래프 구현 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hellocodeclub/graph-implementation-example-in-java-1mhh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)