세그먼트 범위를 결합하는 알고리즘 - 생성에 도움

 

세그먼트의 조각(범위)을 세그먼트의 교차 없이 하나의 세그먼트로 결합하는 알고리즘을 만드는 데 도움을 요청합니다.

처음에는 특정 범위의 숫자 배열이 있으며 숫자는 반복될 수 있으며 이 배열은 경계를 기준으로 세그먼트로 나뉩니다. 경계는 다른 알고리즘에 의해 생성되며 일반적으로 경계가 고르지 않으므로 숫자 배열이 다른 방법으로 잘리고 각 범위의 크기가 다릅니다. 또한 이러한 각 세그먼트는 세 가지 기준으로 평가되었으며 각 기준에는 자체 경계가 있으며 준수하지 않으면 범위의 일부가 제외됩니다. 결과적으로 우리는 이 콘텐츠의 테이블을 얻습니다.

i - 범위의 일련 번호;

S - 범위 시작의 경계.

F - 범위 끝 한계;

%R - 기준 번호 1;

%dP - 기준 2번;

%K_SCO - 기준 #3;

K_Svod - 모든 기준의 요약 점수.

아래 그림은 조각(세그먼트)을 평면에 배치하는 방법을 보여줍니다.

세그먼트 옆에 있는 3가지 색상의 눈금 - 문제에 대한 잠재적인 솔루션입니다.

알고리즘은 조건이 충족되는 방식으로 문제를 해결하는 다양한 조합을 제공해야 합니다.

1. 교차 범위 없이 세그먼트가 선택됩니다(S>=A && F<B).

2. 기존 세그먼트에서 하나 이상의 세그먼트를 추가하는 것은 불가능합니다. 선택 및 사용 가능한 옵션을 기반으로 한 특정 완전성 및 최대 밀도;

3. 세그먼트 순서가 지정됩니다 - 동일한 조합을 제외합니다.

4. K_Svod에 따르면 상위 30% 에서 최고의 세그먼트 중 하나 이상을 사용하여 조합을 줄이고 최고의 지표의 우선 순위를 유지합니다.

이상적으로 품질 평가는 K_Svod 측면에서 모든 세그먼트의 합계를 최대화해야 하지만 공간/갭 채우기를 추정하기 위해 약간 수정해야 할 수도 있습니다.

잘못된 용어를 사용했을 수 있으며 오랫동안 내 작업에 대한 기성품 솔루션이 있습니다. 판단하지 마십시오. 계몽하십시오.

 
Aleksey Vyazmikin :


1) K_Svod - 모든 기준의 요약 점수.

2) 아래 그림은 조각(세그먼트)을 평면에 배치하는 방법을 보여줍니다.

3) 교차 범위 없이 세그먼트가 선택됩니다(S>=A && F<B).

1) 무엇입니까? 왜 xx?

2) 무엇이 올바른 해결책이고 무엇이 그른지를 그림으로 더 잘 보여줍니다.

3) "A"는 무엇이며 "B"는 무엇입니까?

4) 또한 데이터 테이블의 "레이아웃"을 만들고 만족스러운 솔루션으로 보고 싶은 것을 보여줍니다.
 
그래프 이론의 관점에서 풀 수 있습니다. 그래프의 꼭짓점(세그먼트, 그래프 화살표)은 각 꼭짓점을 모든 가능한 후속(가장 가까운 허용 가능한 세그먼트)과 연결합니다. 각 정점과 화살표는 가중치로 표시되며 각 경로의 가중치를 계산하는 규칙이 결정됩니다. 그래프에서 최적의 경로를 찾기 위한 몇 가지 알고리즘이 적용됩니다. 이 문제를 더 자세히 조사할 준비가 되지 않았습니다.)
 
mytarmailS :

1) 무엇입니까? 왜 xx?

2) 무엇이 올바른 해결책이고 무엇이 그른지를 그림으로 더 잘 보여줍니다.

3) "A"는 무엇이며 "B"는 무엇입니까?

4) 또한 데이터 테이블의 "레이아웃"을 만들고 만족스러운 솔루션으로 보고 싶은 것을 보여줍니다.

1. 이것은 내가 아직 가중치를 결정하지 않았다는 사실에서 x인 모든 3개의 추정치의 도함수입니다. 이것은 필수적인 것은 아닙니다.

2. 올바른 솔루션은 공간을 세그먼트(세그먼트 사이에 채워지지 않은 공간이 있는 선)로 채우는 것입니다. 위 그림에서 가능한 3가지 솔루션 각각에 대한 색상을 선택했습니다. 추가 휴리스틱에 대해 생각할 수 있습니다. 모든 세그먼트의 선택된 범위의 합계가 가능한 한 크지만 합계 외에도 K_Svod 지표도 중요합니다.

3. 이것은 세그먼트 내부의 숫자 값입니다. A1>=S1 && A1<F1 && F1<S2로 쓰는 것이 더 정확할 것입니다.

4. 솔루션은 인덱스가 있는 배열입니다. 또는 질문을 이해하지 못했습니다. 알고리즘을 더 잘 수행하는 방법을 모르겠습니다.

 
Aleksey Nikolayev :
그래프 이론의 관점에서 풀 수 있습니다. 그래프의 꼭짓점(세그먼트, 그래프 화살표)은 각 꼭짓점을 모든 가능한 후속(가장 가까운 허용 가능한 세그먼트)과 연결합니다. 각 정점과 화살표는 가중치로 표시되며 각 경로의 가중치를 계산하는 규칙이 결정됩니다. 그래프에서 최적의 경로를 찾기 위한 몇 가지 알고리즘이 적용됩니다. 이 문제를 더 자세히 조사할 준비가 되지 않았습니다.)

아이디어 감사합니다. 옵션으로 각 인덱스 i의 맨 위에서 시퀀스 작성을 시작한 다음 결과 조합을 평가할 수 있다고 생각합니다. 다른 조합을 얻으려면 세그먼트 선택 기준 또는 여러 기준만 있으면 됩니다. 또는 기준을 무작위로 지정하십시오 .... 아직 명확하지 않습니다.

 
Aleksey Vyazmikin :

1. 이것은 내가 아직 가중치를 결정하지 않았다는 사실에서 x인 모든 3개의 추정치의 도함수입니다. 이것은 필수적인 것은 아닙니다.

2. 올바른 솔루션은 공간을 세그먼트(세그먼트 사이에 채워지지 않은 공간이 있는 선)로 채우는 것입니다. 위 그림에서 가능한 3가지 솔루션 각각에 대한 색상을 선택했습니다. 추가 휴리스틱에 대해 생각할 수 있습니다. 모든 세그먼트의 선택된 범위의 합계가 가능한 한 크지만 합계 외에도 K_Svod 지표도 중요합니다.

3. 이것은 세그먼트 내부의 숫자 값입니다. A1>=S1 && A1<F1 && F1<S2로 쓰는 것이 더 정확할 것입니다.

4. 솔루션은 인덱스가 있는 배열입니다. 또는 질문을 이해하지 못했습니다. 알고리즘을 더 잘 수행하는 방법을 모르겠습니다.

나는 아직도 이해하지 못했다

 
Aleksey Vyazmikin :

아이디어 감사합니다. 옵션으로 각 인덱스 i의 맨 위에서 시퀀스 작성을 시작한 다음 결과 조합을 평가할 수 있다고 생각합니다. 다른 조합을 얻으려면 세그먼트 선택 기준 또는 여러 기준만 있으면 됩니다. 또는 기준을 무작위로 지정하십시오 .... 아직 명확하지 않습니다.

그러나 확인 표시는 어디에 있습니까? 세그먼트가이 확인 표시에 속하는 일종의 기준이 있습니까?
사실, 세 개의 체크 표시가 있습니다. 파랑 빨강. 초록.
즉, 이 예에서는 세 개의 식별자입니다.
이러한 식별자를 어떻게든 할당하면 세 개의 기본 배열 로 연결할 수 있습니다.
식별자로 결과 세그먼트의 크기를 얻습니다.
식별자로 기본 수신 어레이를 결정하고 이 크기만큼 용량을 늘립니다 .
아이디  배열 끝에 세그먼트를 삽입합니다.
즉, 세그먼트가 이 체크 표시(식별자)에 속하는지 기준으로 정의해야 합니다.

 
mytarmailS :

나는 아직도 이해하지 못했다

당신이 이해하지 못하는 것을 명확히하십시오 - 나는 다른 말로 설명하려고 노력할 것입니다.

 
Roman :

그러나 확인 표시는 어디에 있습니까? 세그먼트가이 확인 표시에 속하는 일종의 기준이 있습니까?
사실, 세 개의 체크 표시가 있습니다. 파랑 빨강. 초록.
즉, 이 예에서는 세 개의 식별자입니다.
이러한 식별자를 어떻게든 할당하면 세 개의 기본 배열 로 연결할 수 있습니다.
식별자로 결과 세그먼트의 크기를 얻습니다.
식별자로 기본 수신 어레이를 결정하고 이 크기만큼 용량을 늘립니다 .
아이디  배열 끝에 세그먼트를 삽입합니다.
즉, 세그먼트가 이 체크 표시(식별자)에 속하는지 기준으로 정의해야 합니다.

나는 세그먼트를 그린 다음 조합의 변형을 보여줄 필요가 있다고 생각했습니다. 교차하지 않고 전체적으로 넓은 영역을 차지하는 조합을 보았습니다. 일부 세그먼트에는 두 개의 체크 표시가 있는데, 이는 세그먼트가 둘 이상의 조합에 포함될 수 있음을 의미합니다.

저것들. 데이터 처리가 시작되기 전에 식별자가 없습니다.
 
Aleksey Vyazmikin :

나는 세그먼트를 그린 다음 조합의 변형을 보여줄 필요가 있다고 생각했습니다. 교차하지 않고 전체적으로 넓은 영역을 차지하는 조합을 보았습니다. 일부 세그먼트에는 두 개의 체크 표시가 있는데, 이는 세그먼트가 둘 이상의 조합에 포함될 수 있음을 의미합니다.

저것들. 데이터 처리가 시작되기 전에 식별자가 없습니다.

알고리즘을 기반으로 어떤 기준에 따라 각 세그먼트를 식별하고 식별자를 할당할 수 있습니다.
그리고 세그먼트가 둘 이상의 조합에 포함될 수 있다는 사실은 메인 어레이 에 다시 추가해야 하는지 여부에 따라 다릅니다.
삼항 또는 조건부 연산자는 어떻게 든 논리를 능가합니다.

 
Roman :

알고리즘을 기반으로 어떤 기준에 따라 각 세그먼트를 식별하고 식별자를 할당할 수 있습니다.
그리고 세그먼트가 둘 이상의 조합에 포함될 수 있다는 사실은 메인 어레이 에 다시 추가해야 하는지 여부에 따라 다릅니다.
삼항 또는 조건부 연산자는 어떻게 든 논리를 능가합니다.

따라서 그로부터 진행할 알고리즘이 없습니다. :) 각 세그먼트는 일련 번호로 식별되며 좌표(X축을 따라)에 대한 정보와 이러한 좌표에 대한 일종의 유틸리티 평가가 있습니다.

지금까지는 초기 아이디어에서 가장 가까운 세그먼트를 선택하는 단 하나의 아이디어가 떠올랐습니다. 아마도 이런 식으로 처음 3개의 가장 가까운 것을 선택할 수 있으며, 세그먼트 수에 따라 조합 수가 증가합니다.