문제

나의 질문은 실제로 요청한 문서,기사,텍스트 또는 책에서 문제를 해결하기 위해 노력하고있에서 작동합니다.

내 프로그램을 계산하는 조건자 값(true 이거나 false)특정 개체에 대한 분산 시스템에 있는 이벤트 스트림을 변경할 수 있는 객체의 특성하고,그 결과 조건자 값입니다.언제 조건자 값을 변경해야합니다 프로그램에 대한 알림을 보낼 수 있도록 도와줍니다.

예를 들어,고려가 있는 개체 A 는 라는 특성 name 고 고려가 있는 조건자 P 는 경우에도 마찬가지입니다 이 물체의 name 과 동일 Jhon.스트림의 각 이벤트에 타임스탬프 및 특성에 대한 값 이름입니다.그래서 고려하는 이벤트 시퀀스는 다음과 같습니다:

e1 = { name: Jhon, timestamp: 1 }
e2 = { name: Jhon, timestamp: 2 }
e3 = { name: Peter, timestamp: 3 }
e4 = { name: Doug, timestamp: 4 }
e5 = { name: Jhon, timestamp: 5 }

에서 이 문제는 이벤트를 총기 위해 관계:두 개 있는 경우 이벤트를 항상 당신을 말할 수 있는 하나의 가장 오래된 것입니다.

지금 이벤트지 않는 반드시 표시 스트림에서 올바른 순서에 따라 타임스탬프입니다.각 이벤트에서 고유한 그것의 타임 스탬프,그래서 거기에는 두 개 또는 더 이벤트와 동일한 타임스탬프에 대한 동일한 개체입니다.또한,타임 스탬프를 하지 않는 양식 순서는 항상 증가에 의해 하나:는 경우리 e1 으로 타임 스탬프 1e3 으로 타임 스탬프 3,그것을 의미하지는 않의 존재 e2 으로 타임 스탬프 2.는 보장은 없 모든 이벤트를 수신할 때 또는 그들이 받을 것이다.그것은 문제의 일부만 존재에 대해 알고의 이벤트가 우리가 볼 수있는 스트림에서.

실시 시나리오는 더:여러 대의 컴퓨터가 있 병렬 처리한 이 스트림의 이벤트입니다.그러나,단순화를 위해,나는 더 가 이 예제에서 고려하는 단 하나의 컴퓨터입니다.

는 경우 이벤트가 도착 및 순서대로 처리한다 위에서 설명한 다음,알림을 보내어야 한다:

P(A) = true when e1 arrives
P(A) = false when e3 arrives
P(A) = true when e5 arrives.

그의 정확한 순서 알림이기 때문에 그것을 존중한 타임스탬프 주문.이제는 상상의 컴퓨터를 받는 이벤트는 다음 순서:

e1, e5, e2, e4, e3

순진한 알고리즘을 고려하지 않고 이벤트에 타임스탬프 보낼 것이라고 잘못된 시퀀스의 알림:

P(A) = true when e1 arrives
P(A) = false when e4 arrives

알고리즘에서 작업하는 고려한 타임스탬프 및 유추하면 알림을 보냈지만 아니었다.그래서 때 e3 도착 그것은 것을 알 수 있 알림 P(A) = truee5 발송되지 않았습니다.이 같은 느낌을 개혁 바퀴지만,나의 인식에 대해 읽고 이 문제를 해결합니다.내가 좋아하지 않을 것이 참조하는 이 문제 또는 비슷한 것 같은 일부를 다루는 논문으로 이런 종류의 문제입니다.

진짜 문제는 매우 복잡하기 때문에 그것을 포함한 저장 조건자 $\번$ 체 상태에서는 데이터베이스 작동으로 공유 사이의 상태를 컴퓨터 처리과 스트림에 대한 얘기는 수천의 이벤트에 도착을 초당 그래서 그것이 가능한 모든 이벤트에 저장된 일부 데이터베이스입니다.

이 있는 문학에 대한 문제는 내가 설명되어 있는가?그렇다면,당신은 나에게 링크를?

시 종이 또는 설명하는 텍스트는 알고리즘을 이 문제를 해결하고 그것은 더 나은 것을 경우 이러한 종이 제공하는 증거에 대해 알고리즘(예:정확성).

는 경우 이러한 종이 존재하지 않는(실제로 생각되는 경우),제가 받아들이 대답에 대해 설명하는 알고리즘이 제공하는 인수 또는 증명에 대한 그것의 정확성이 있어야 한다.

는 알고리즘에 대한 올바른 항상 보내의 정확한 순서 알림을 어떤 순서는 이벤트에 도착한다.그리고 알고리즘을 사용하지 말아야 한다는 받은 모든 이벤트에서는 메모리기 때문에,진짜 문제는 상품을 가진 너무 많은 이벤트 메모리에 저장하거나 저장소에서 DB.그것은 합리적인 것을 계속 이벤트 메모리에서 바람직하게는 고정된 금액입니다.

도움이 되었습니까?

해결책

불가 결과를#1:삭제 이벤트

문제를 해결할 수 없는 일반;방법은 없는 것을 보장하는 귀하의 요구 사항을 충족할 경우 이벤트가 떨어(즉,지 않)받았습니다.고려한 첫 번째 이 스트림:

e1 = { name: Jhon, timestamp: 1 }
e2 = { name: Jhon, timestamp: 4 }

는 알고리즘을 보는 모두 이벤트입니다.다음,이를 고려한 스트림:

e1' = { name: Jhon, timestamp: 1 }
e2' = { name: Pete, timestamp: 2 }
e3' = { name: Jhon, timestamp: 3 }
e4' = { name: Jhon, timestamp: 4 }

는 알고리즘을 보고만 이벤트 e1',e4' (다른 이벤트를 잃지 않)받았습니다.지고 있음을 알 수 있습니다 무엇을 알고리즘을 보고 두 경우 모두에서 동일하다,그래서 그 출력이 동일한다.그러나,정답은 다릅에서 이러한 두 가지 경우,그래서 소망은 없는 알고리즘을 항상을 생산한다는 사실을 나타냅니다.(올바른 응답에서 첫번째 경우를 생산 알림;올바른 응답에서 두 번째 경우를 생산하는 두 개의 알림을 표시하는 조건자가 거짓을 받은 후 e2', 고 하는 것을 나타내는 조건자가 진정한 후에 수신 e3'.)

그것은 명확하지 않는 방법에 적응하는 요구 사항은 이러한 상황에 대처하기 위해.만 그럴듯한 솔루션을 볼 수 있었다고 말하는 것 알림이 생산해야에만 의존 받은 이벤트,에 없는 이벤트를 보냈습니다.이 지정하는 이벤트를 삭제할 수 없습니다.

불가 결과를#2:다시 주문 이벤트

당신 상태를 처리할 수 있어야 합니다 다시 주문 이벤트를 저장하지 않고,모든 이벤트 메모리에,그리고 임의로 다시 주문.그러나,이러한 요구 사항에 호환되지 않:는 달성하는 것은 불가능하다.고려 오랜 시퀀스와 이벤트에 타임스탬프 2,4,6,8,10,12,...의 끝에서 오래의 이벤트 시퀀스,이벤트와 이상한 타임스탬프,도착한 유일한 방법은 확실히 당신은 그것을 처리할 수 있는 올바르게 저장하는 전체 역사의 과거의 사건(또는 과거국의 object).

그래서,당신은 긴장을 요구 사항에 대해 다시 주문 뿐만 아니라.아마도 기꺼이 자신을 저장하는 모든 이벤트 메모리에서 전체적인 이미지를 연상시키는.(그렇다면,당신은 해결책을 가지고 있습니다.) 아마도 당신은 기꺼이 부과에 다시 주문,예를 들어,어떤 경우 지연될 10 분 이상.(그렇다면,당신은 단지를 저장하는 역사에 대해 지난 10 분,그리고 모든 이전 삭제할 수 있습니다.) 아마도 다른 뭔가가 더 많은 의미에서 특정 상황이다.

그러나 한 가지지 않는 옵션을 부과하는 모든의 강에 명시된 요구 사항은 당신의 질문 및 필요하는 알고리즘은 항상 올바른입니다.


나는 모든 문학이 나지 않는 특히 어떤 기대하는 이유가있을 수 있다.그것은 아주 특별 요구 사항에,그리고 그것을 나에게 다음과 같은 결과 작업이거나 사소하거나 불가능한 해결합니다.그 일반적으로 않는 종류의 문제는 경향이 연구에서 문학.아마도에 관심이 있을 수도 있습니다 지속적인 데이터 구조, 지만 멋진 방법으로 저장하는 전체 역사의 이벤트는 당신이 말하고 싶;고 당신이 필요로 하지 않는 멋진 데이터 구조에 대해서는 특정 상황이다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top