텍스트를 최대 너비의 선으로 균등하게 나누는 선형 시간 알고리즘이 있습니다. SMAWK (또는 Knuth & Plass)를 사용하며 "균등"은 다음을 의미합니다. http://en.wikipedia.org/wiki/Word_wrap#Minimum_raggedness
위의 알고리즘에는 최대 줄 너비 대신 텍스트를 나누려는 줄 수를 고려하는 알고리즘 또는 오목한 비용 함수가 있습니까? 선형 시간에도?
즉, 입력이 원하는 줄 너비가 아닌 원하는 줄 수인 줄 바꿈 (또는 단락 형성 또는 단어 줄 바꿈) 알고리즘을 찾고 있습니다.
실제로 사용할 수없는 접근 방식을 설명하기 만하면됩니다. 각 단어 쌍 사이에 N 개의 단어와 N-1 개의 공백이 있으며 M은 원하는 행 수입니다 (M <= N). 각 공백 후에 최대 하나의 줄 바꿈이있을 수 있습니다. 이제 알고리즘은 가능한 각 조합에 나누기를 배치하여 "정지"를 계산하고 가장 좋은 것을 반환하려고 시도합니다. 훨씬 빠르게하는 방법?
또한 그러한 문제에 이름이 있습니까? 문제의 "가족"은 무엇입니까? (예 : "빈 포장") 완벽하게 최적의 솔루션이 필요하지 않으면 아주 좋은 솔루션이 훨씬 더 빨리 해결 될 수 있습니까? (지정된 입력에 대해 항상 동일하거나 아마도 최적이 아닌 솔루션이있는 경우 일부 형태의 휴리스틱을 사용할 수 있습니다).
최신 정보
찬드라 체 쿠리는 "동적 프로그래밍에 관한 Kleinberg and Tardos 장의 문제"를 다음과 같이 제안했다. 잘 읽었지만 줄 수보다 너비를 기준으로 줄 바꿈을 처리합니다. 내가 지금 알아 내려고하는이 문제에 적응할 수 있습니다. 다음은 솔루션에 대한 좋은 링크입니다. 선형 시간으로 해결한다고 주장합니다. http://web.media.mit.edu/~dlanman/courses/cs157/HW5.pdf
또한 Skiena의 Algorithm Design Manual에 "8.5 파티션 문제"장이 있습니다.이 주제는 정확히 주제에 해당되는 것 같습니다. (불행히도, 내가 이해 한 것으로부터 2 차 시간 복잡성이 있음)