Я не уверен, что определение задачи завершено, потому что если это так, я не вижу другого разумного способа его решения, кроме его упрощения.
Итак, вот несколько вещей, которые я бы предположил:
- t (q, 1) = k (нам нужно найти t (q, r)) => t (1,1) = q / k, почему?Поскольку, если мы не предполагаем, что время зависит только от количества инструкций, а не от типа инструкций, мы на самом деле не можем решить эту задачу.В таком случае q не будет рассматриваться как число, и мы не можем предполагать, что другой набор инструкций будет занимать меньше или больше времени в зависимости от количества инструкций.В заключение, что касается моего чтения в этой задаче, они связывают время только с количеством инструкций.
- если программа является нативной на одном уровне 'r', то для их интерпретации потребуется n инструкций другого уровня (сделать их родными).В определении задачи (как представлено здесь) нет ничего, что заставляло бы вас интерпретировать только инструкции уровня r + 1.На самом деле, поскольку мы начинаем с первого уровня, «инструкции n уровня r требуются для интерпретации одной инструкции r + 1», было бы довольно бесполезно, если бы мы не могли предположить то, что я говорю выше.
- также q инструкции уровня Xпосле интерпретации всегда следует преобразовывать в инструкции уровня q, другие тиски, мы никогда не сможем узнать время выполнения другого уровня, потому что число инструкций может сильно различаться (как в реальном мире)
Так вотответьте с этими предварительными условиями:
q=number of level one program instructions
t(q, r)=time necessary to execute q **level 1** instructions on level r comp
t(1, r)=time necessaty to execute one instruction on level r comp
t(1, 1)=time necessary to execute one instruction on level 1 comp
t(q, 1)/m^(r-1)=time to execute q **native** instructions on level r comp
t(q, 1)=k
t(1, 1)=k/q
t(q,r)=(time to interpret q non-native instructions/convert them to native) + (time to actually execute the code)
t(q,r)=t(qn, 1)/m^(r-1) + t(q, 1)/m^(r-1)
t(q,r)=(time to execute qn native instructions) + (time to execute q native instructions)
t(q,r)=nt(q, 1)/m^(r-1) + t(q, 1)/m^(r-1)
t(q,r)=(n+1)t(q, 1)/m^(r-1)
t(q,r)=(n+1)k/m^(r-1)
Если какое-либо из 3 предположений неверно, вам нужно ввести новые неизвестные функции, чтобы ответ стал просто уравнением неизвестных функций, которое было бы бесполезным, но гораздо более бесполезным, чем это.один.Это просто красивее:)
Кстати вам нужно посмотреть на ваши упражнения в университете, чтобы увидеть, как были решены подобные задачи, чтобы убедиться, что подход к проблеме правильный.